{"version":3,"file":"static/js/698b95fe07c32cda5d05.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/alert/Alert.tsx?44c5","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/back-to-top/BackToTop.tsx?0cf6","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/button/Button.tsx?457f","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/collapse/Collapse.tsx?27f6","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/common/KeyCodes.ts?0c24","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/common/localeBasedPrice.ts?42e9","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/common/stringExtensions.ts?f421","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/common/telemetryHelper.ts?068b","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/common/utilities.ts?93e6","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/ControlledDrawer.tsx?9a39","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/Drawer.tsx?da2c","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/fade/Fade.tsx?31ba","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/flipper/Flipper.tsx?36cd","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/form-builder/form-builder.tsx?c7f3","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/heading/Heading.tsx?c36b","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/incremental-quantity/IncrementalQuantity.tsx?1af1","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.tsx?1fd3","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.props.ts?d9d2","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/labeled-dropdown/LabeledDropdown.tsx?ab7c","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Portal.tsx?c937","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Modal.tsx?7d4b","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalBody.tsx?c097","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalFooter.tsx?8e31","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalHeader.tsx?627d","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/Pagination.tsx?ebf9","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationItem.tsx?6f25","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationLink.tsx?b97e","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/UncontrolledPagination.tsx?4877","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/popover/Popover.tsx?3cf4","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/node_modules/react-popper/lib/Manager.js?6dcb","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/node_modules/react-popper/lib/Target.js?691b","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/node_modules/react-popper/lib/Popper.js?6780","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/node_modules/react-popper/lib/Arrow.js?a5d7","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/popper-content/PopperContent.tsx?1148","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/popup-products/Popup-products.tsx?2288","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/popup/Popup.tsx?0173","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor-mode-selection.tsx?3c70","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor.tsx?ca15","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/progress/Progress.tsx?fbb5","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/quantity/Quantity.tsx?b66b","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/single-slide-carousel/SingleSlideCarousel.tsx?b47d","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/SliderThumb.tsx?5d3f","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/Slider.tsx?bb4c","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/table/Table.tsx?8faf","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/table/checkbox.tsx?36f8","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/Tooltip.tsx?8355","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/UncontrolledTooltip.tsx?30ec","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/waiting/Waiting.tsx?ba13","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/module.tsx?dadb","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/node.tsx?cdf8","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ImagefullView.tsx?adc9","webpack://mattressfirm/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ZoomImage.tsx?3088","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.number.parse-float.js?048e"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport UncontrolledTooltip from '../tooltip/UncontrolledTooltip';\nimport { IAlertProps } from './Alert.props';\n\n/**\n * Alert component.\n */\nexport default class Alert extends React.PureComponent {\n public static defaultProps: Partial = {\n color: 'success',\n isOpen: true,\n tag: 'div',\n closeAriaLabel: 'Close',\n fade: true,\n assertive: false,\n includeAlertClass: true,\n transition: {\n ...Fade.defaultProps,\n unmountOnExit: true\n }\n };\n\n public render(): JSX.Element {\n const {\n id,\n className,\n closeClassName,\n cssModule,\n tag,\n toggle,\n color,\n isOpen,\n children,\n transition,\n fade,\n assertive,\n includeAlertClass,\n 'aria-label': ariaLabel\n } = this.props;\n\n const classes = includeAlertClass\n ? mapToCssModules(classNames(className, 'msc-alert', `msc-alert-${color}`), cssModule)\n : className;\n\n const closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);\n\n const alertTransition = {\n ...Fade.defaultProps,\n ...transition,\n baseClass: fade ? 'fade' : '',\n timeout: fade ? (transition ? transition.timeout : 0) : 0,\n appear: !!fade,\n enter: !!fade,\n exit: !!fade\n };\n\n const Tag = tag || 'div';\n const buttonId = fade ? 'buttonDismiss' : 'buttonFadeless';\n\n const innerContent = (\n <>\n {toggle ? (\n
\n \n \n close\n \n
\n ) : null}\n {children}\n \n );\n\n const style = isOpen ? undefined : { display: 'none' };\n\n // When using assertive alerts, you need to have the assertive region rendered on the page from\n // the start. When using fade, the entire fade region doesn't render. So you gotta first wrap the\n // fade region in a tag, keep that tag hidden if the alert is closed.\n //\n // Note that this current approach will have some issues if tag is something like li. But that is a bridge\n // that can be crossed when/if we need to cross it this works for divs/spans so it should be good enough for now\n if (fade && assertive) {\n return (\n \n \n {innerContent}\n \n \n );\n } else if (fade) {\n return (\n \n {innerContent}\n \n );\n }\n return (\n \n {innerContent}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, TelemetryConstant } from '..';\nimport { IBackToTopProps } from './BackToTop.props';\n\nexport interface IBackToTopStateAttributes {\n 'aria-hidden': boolean;\n tabIndex: number;\n}\n\nexport interface IBackToTopState extends React.ComponentState {\n attributes: IBackToTopStateAttributes;\n}\n\n/**\n * Back To Top - This component is used to scroll to the top of the page.\n */\nexport default class BackToTop extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'btn btn-lg btn-secondary',\n delayInMs: 0,\n scrollStepInPx: 25\n };\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: IBackToTopProps) {\n super(props);\n this.state = { attributes: { 'aria-hidden': true, tabIndex: -1 } };\n this._reevaluatePosition = this._reevaluatePosition.bind(this);\n this._scrollToTop = this._scrollToTop.bind(this);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.BackToTop);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public componentDidMount(): void {\n window.addEventListener('resize', this._reevaluatePosition);\n window.addEventListener('scroll', this._reevaluatePosition);\n this._reevaluatePosition();\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._reevaluatePosition);\n window.removeEventListener('scroll', this._reevaluatePosition);\n }\n\n public render(): JSX.Element {\n const { className, threshold, delayInMs, scrollStepInPx, ...props } = this.props;\n const children = this.props.children || ;\n if (this.props.text) {\n return (\n \n {this._renderHeading(this.props.text)}\n \n );\n }\n return (\n \n {children}\n \n );\n }\n\n private readonly _renderHeading = (text: string): JSX.Element | undefined => {\n return ;\n };\n\n private _scrollStep(): void {\n if ((document.documentElement.scrollTop || document.body.scrollTop) === 0) {\n clearInterval(this.state.intervalId);\n this.setState({ intervalId: 0 });\n this._reevaluatePosition();\n }\n\n if (this.state.intervalId !== 0) {\n window.scrollTo(0, document.body.scrollTop - this.props.scrollStepInPx);\n document.body.scrollTop = document.body.scrollTop > 0 ? document.body.scrollTop - this.props.scrollStepInPx : 0;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _scrollToTop(e: any): void {\n e.preventDefault();\n const intervalId = setInterval(this._scrollStep.bind(this), this.props.delayInMs);\n this.setState({ intervalId });\n }\n\n private _reevaluatePosition(): void {\n // TODO:\n // change the threshold minimum to zero\n // add a prop for specifying multiplier of page height instead of absolute threshold\n // add clientWidth check to hide at < 768\n const scrollTop = window.pageYOffset || document.body.scrollTop;\n const height = Math.min(window.innerHeight, document.documentElement.clientHeight);\n const threshold = Math.min(this.props.threshold !== undefined ? this.props.threshold : -1, 100);\n const hide =\n scrollTop > 0 && threshold >= 0\n ? scrollTop < ((document.documentElement.scrollHeight - height) * threshold) / 100\n : scrollTop < height * 2;\n const tabIndexValue = hide ? -1 : 0;\n this.setState({ attributes: { 'aria-hidden': hide, tabIndex: tabIndexValue } });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IButtonProps } from './Button.props';\n\n/**\n * Button component.\n */\nexport default class Button extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'button',\n outline: false\n };\n\n public props: IButtonProps;\n\n constructor(props: IButtonProps) {\n super(props);\n this.props = props;\n this.onClick = this.onClick.bind(this); // Put this in componentDidMount\n }\n\n public render(): JSX.Element {\n const { active, block, className, cssModule, color, outline, size, tag, innerRef, ...attributes } = this.props;\n const classes = mapToCssModules(\n classNames(\n className,\n 'msc-btn',\n outline && color\n ? `btn-outline-${color}`\n : color && outline === false\n ? `btn-${color}`\n : color === undefined && outline === true\n ? 'btn-outline'\n : '',\n size ? `btn-${size}` : false,\n block ? 'btn-block' : false,\n { active, disabled: this.props.disabled }\n ),\n cssModule\n );\n\n let Tag = tag || 'button';\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n return (\n \n );\n }\n\n private readonly onClick = (e: React.MouseEvent) => {\n if (this.props.disabled) {\n e.preventDefault();\n\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionStatuses, TransitionTimeouts } from '../common/utilities';\nimport { ICollapseProps } from './Collapse.props';\n\nexport interface ICollapseState {\n height: number | null;\n}\n\ntype IHash = {\n [key in TransitionStatuses]: string;\n};\n\n/**\n * This is the controlled version of a Collapse component, and as such the toggle behavior is expected to be handled in a parent component.\n * @see See [Uncontrolled Components - React](https://reactjs.org/docs/uncontrolled-components.html) to learn more.\n * @visibleName Collapse (controlled)\n */\nexport default class Collapse extends React.Component {\n public static defaultProps: Partial = {\n isOpen: false,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n };\n\n public props: ICollapseProps;\n\n public state: ICollapseState;\n\n private readonly _transitionStatusToClassHash: IHash = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n };\n\n private readonly _tagRef: React.RefObject = React.createRef();\n\n constructor(props: ICollapseProps) {\n super(props);\n this.props = props;\n\n this.state = {\n height: 0\n };\n\n this._onEntering = this._onEntering.bind(this);\n this._onExit = this._onExit.bind(this);\n this._onExited = this._onExited.bind(this);\n this._onExiting = this._onExiting.bind(this);\n this._reevaluateHeight = this._reevaluateHeight.bind(this);\n }\n\n public componentDidMount(): void {\n window && window.addEventListener('resize', this._reevaluateHeight);\n }\n\n public componentDidUpdate(nextProps: ICollapseProps): void {\n if (nextProps.children !== this.props.children) {\n this._reevaluateHeight();\n }\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this._reevaluateHeight);\n }\n\n public shouldComponentUpdate(nextProps: ICollapseProps, nextState: ICollapseState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n isOpen,\n className,\n children,\n navbar,\n cssModule,\n\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n timeout,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n\n ...otherProps\n } = this.props;\n\n const Tag = tag || 'div';\n const transitionProps = {\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n };\n\n const { height } = this.state;\n const style = height === null || height === 0 ? null : { minHeight: height };\n\n return (\n \n {(status: TransitionStatuses) => {\n const collapseClass = this._getTransitionClass(status);\n const classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n\n public reEvaluateHeight(): void {\n this._reevaluateHeight();\n }\n\n private _reevaluateHeight(): void {\n const node = this._tagRef.current;\n if (node !== null && node.firstElementChild && node.firstElementChild.scrollHeight > 0) {\n this.setState({ height: node.firstElementChild.scrollHeight });\n }\n }\n\n private _getTransitionClass(status: TransitionStatuses): string {\n return this._transitionStatusToClassHash[status] || 'collapse';\n }\n\n private _onEntering(node: HTMLElement, isAppearing: boolean): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onEntering) {\n this.props.onEntering(node, isAppearing);\n }\n }\n\n private _onExit(node: HTMLElement): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onExit) {\n this.props.onExit(node);\n }\n }\n\n private _onExiting(node: HTMLElement): void {\n this.setState({ height: 0 });\n\n if (this.props.onExiting) {\n this.props.onExiting(node);\n }\n }\n\n /**\n * Get Parent element.\n * @param node - HTML Element.\n */\n private readonly _updateParentElement = (node: HTMLElement): void => {\n const parentElement = node.parentElement;\n if (parentElement) {\n if (parentElement.classList.contains('collapse') && parentElement.classList.contains('show')) {\n parentElement.style.minHeight = 'auto';\n }\n this._updateParentElement(parentElement);\n }\n };\n\n private _onExited(node: HTMLElement): void {\n this.setState({ height: null });\n this._updateParentElement(node);\n\n if (this.props.onExited) {\n this.props.onExited(node);\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum KeyCodes {\n Back = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Break = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40,\n Print = 44,\n Insert = 45,\n Delete = 46,\n Colon2 = 59, // Opera and Firefox\n Equals2 = 61, // Opera\n Equals3 = 107, // Firefox\n Minus2 = 109, // Opera and Firefox\n Period = 190,\n WindowsLeft = 91,\n WindowsRight = 92,\n WindowsOpera = 219, // Opera\n Menu = 93,\n NumPad0 = 96,\n NumPad1 = 97,\n NumPad2 = 98,\n NumPad3 = 99,\n NumPad4 = 100,\n NumPad5 = 101,\n NumPad6 = 102,\n NumPad7 = 103,\n NumPad8 = 104,\n NumPad9 = 105,\n NumPadMultiply = 106,\n NumPadPlus = 107,\n NumPadMinus = 109,\n NumPadDot = 110,\n NumPadDivide = 111,\n Function1 = 112,\n Function2 = 113,\n Function3 = 114,\n Function4 = 115,\n Function5 = 116,\n Function6 = 117,\n Function7 = 118,\n Function8 = 119,\n Function9 = 120,\n Function10 = 121,\n Function11 = 122,\n Function12 = 123,\n NavigationUp = 138,\n NavigationDown = 139,\n NavigationLeft = 140,\n NavigationRight = 141,\n NavigationAccept = 142,\n NumLock = 144,\n ScrollLock = 145,\n Colon = 186,\n Equals = 187,\n Comma = 188,\n Minus = 189,\n ForwardSlash = 191,\n Tilde = 192,\n GamepadA = 195,\n GamepadB = 196,\n GamepadX = 197,\n GamepadY = 198,\n GamepadRightButton = 199,\n GamepadLeftButton = 200,\n GamepadLeftTrigger = 201,\n GamepadRightTrigger = 202,\n GamepadDPadUp = 203,\n GamepadDPadDown = 204,\n GamepadDPadLeft = 205,\n GamepadDPadRight = 206,\n GamepadSelect = 207,\n GamepadStart = 208,\n GamepadLeftThumbstick = 209,\n GamepadRightThumbstick = 210,\n GamepadLeftThumbstickUp = 211,\n GamepadLeftThumbstickDown = 212,\n GamepadLeftThumbstickRight = 213,\n GamepadLeftThumbstickLeft = 214,\n GamepadRightThumbstickUp = 215,\n GamepadRightThumbstickDown = 216,\n GamepadRightThumbstickRight = 217,\n GamepadRightThumbstickLeft = 218,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n Quote = 222\n}\n\n/**\n * Here for test coverage.\n */\nexport class KeycodesClass {\n public testCoverage(): string {\n return ':(';\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { EMPTY } from '@msdyn365-commerce/retail-proxy';\nimport { KeyCodes } from './KeyCodes';\n\nexport interface ILocalizedPrice {\n customizedAmount?: string;\n amountVariable?: string;\n paymentAmount?: number;\n}\n\n/**\n * Get Locale Based Customized Price function.\n * @param customPrice - customPrice.\n * @param state - state.\n * @param locale - locale.\n * @param keyCode - keyCode\n * @returns modified state.\n */\nexport function getLocaleBasedCustomizedPrice(\n customPrice: string,\n state: ILocalizedPrice,\n locale: string,\n keyCode: number\n): ILocalizedPrice {\n // Checking if the backspace is being pressed then remove the particular digit from string. so added char 'B' to identify backspace event.\n const returnState: ILocalizedPrice = state;\n if (keyCode === KeyCodes.Back) {\n // Checking if the all value is being deleted by CTRL+ A+ BACKSPACE, then set value as 0.\n const amountData = (state.amountVariable as string).slice(0, -1);\n if (StringExtensions.isNullOrEmpty(customPrice)) {\n returnState.paymentAmount = parseFloat(customPrice);\n setLocaleBasedAmount('0', locale, returnState, state, keyCode);\n } else {\n // Otherwise remove the particular digit from string and send data to format.\n returnState.paymentAmount = parseFloat(amountData);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n }\n } else if (StringExtensions.isNullOrWhitespace(customPrice) || customPrice.length === 1) {\n // Checking if the last entered digit is space only or contains only one digit then assign value accordingly without appending prefix value.\n returnState.paymentAmount = parseFloat(customPrice);\n if (customPrice.length === 1) {\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else {\n // If no value found then set value as 0.\n setLocaleBasedAmount('0', locale, returnState, state, keyCode);\n }\n // this._updatePrice(state.productPrice, parseFloat(customPrice));\n } else if (customPrice.charAt(customPrice.length - 1) === '.' && (state.amountVariable as string).split('.').length - 1 === 1) {\n // Checking if the last entered value is dot and existing value is containing dot or not.\n // checking for first char after dot should not contain any other dots.\n if (state.amountVariable?.includes('.') && customPrice.charAt(customPrice.length - 1) === '.') {\n return state;\n }\n let stringAmount = customPrice.replace(/[^0-9]/g, EMPTY);\n stringAmount = `${stringAmount}.`;\n returnState.paymentAmount = parseFloat(stringAmount);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else if (customPrice.charAt(customPrice.length - 2) === '.' && (state.amountVariable as string).split('.').length - 1 === 1) {\n // checking for second char after dot should not contain any other dots.\n if (state.amountVariable?.includes('.') && customPrice.charAt(customPrice.length - 1) === '.') {\n return state;\n }\n returnState.paymentAmount = parseFloat(customPrice);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else if ((state.amountVariable as string).includes('.') && (state.amountVariable as string).split('.').length - 1 === 1) {\n // checking if pre existing amount doesn't contain any dot then append last entered value and then send for customize the amount.\n const lastDigit = customPrice.charAt(customPrice.length - 1);\n returnState.paymentAmount = parseFloat((state.amountVariable as string) + lastDigit);\n setLocaleBasedAmount((state.amountVariable as string) + lastDigit, locale, returnState, state, keyCode);\n } else {\n // Generally without backspace and dot value comes under this section and get appended into existing string for further amount customization.\n const stringAmount = customPrice.replace(/[^0-9]/g, EMPTY && customPrice.split('.').length - 1 === 1);\n returnState.paymentAmount = parseFloat(stringAmount);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n }\n\n return returnState;\n}\n\n/**\n * Set customizedAmount and amountVariable in state as per Locale Based function.\n * @param inputTextValue - inputTextValue.\n * @param locale - locale.\n * @param returnState - returnState.\n * @param state - state.\n * @param keyCode - keyCode.\n * @returns void.\n */\nconst setLocaleBasedAmount = (\n inputTextValue: string,\n locale: string,\n returnState: ILocalizedPrice,\n state: ILocalizedPrice,\n keyCode: number\n): void => {\n let amountForUI: string = EMPTY;\n let newVar: string = (state.paymentAmount as number).toString();\n const usedVar = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];\n\n // Check if the Input is one or less than one characters the initialize the value in input box.\n if (StringExtensions.isNullOrWhitespace(inputTextValue) || inputTextValue.length === 1) {\n const recentInputNumber = inputTextValue.charAt(inputTextValue.length - 1);\n if (usedVar.includes(recentInputNumber)) {\n returnState.amountVariable = inputTextValue;\n } else {\n return;\n }\n amountForUI = new Intl.NumberFormat(locale).format(Number(inputTextValue));\n returnState.customizedAmount = amountForUI;\n } else {\n const recentInputNumber = inputTextValue.charAt(inputTextValue.length - 1);\n\n // Append last input amount digit and append with previous input amount and then send to format the value.\n if (usedVar.includes(recentInputNumber)) {\n if (state.amountVariable?.includes('.')) {\n if (state.amountVariable?.substring(state.amountVariable?.indexOf('.') + 1).length <= 3) {\n newVar = newVar.slice(0, -1);\n returnState.amountVariable = newVar + recentInputNumber;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar + recentInputNumber));\n returnState.customizedAmount = amountForUI;\n }\n } else {\n returnState.amountVariable = newVar;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar));\n returnState.customizedAmount = amountForUI;\n }\n } else if (recentInputNumber === '.' && newVar.replace(/[^.]/g, EMPTY).length === 0 && newVar.split('.').length - 1 === 0) {\n // Append dot (.) in Amount string.\n const inputWithDot = newVar + recentInputNumber;\n returnState.amountVariable = inputWithDot;\n returnState.customizedAmount = inputWithDot;\n } else if (keyCode === KeyCodes.Back) {\n returnState.amountVariable = newVar;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar));\n returnState.customizedAmount = amountForUI;\n }\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function format(formatSpecifier: string, ...parameters: any[]): string {\n if (!formatSpecifier) {\n return '';\n }\n\n return formatSpecifier.replace(/{(\\d+)}/g, (match: string, index: number) => {\n if (index >= parameters.length) {\n return match;\n }\n\n const value = parameters[index];\n\n if (typeof value !== 'number' && !value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return value.toString();\n });\n}\n\n/**\n * @name - isNullOrWhiteSpace\n * @description - Determines if the specified string is undefined, null, empty, or whitespace.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {boolean} - True if the value is undefined, null, empty, or whitespace, otherwise false.\n */\nexport function isNullOrWhiteSpace(value: string): boolean {\n return !value || typeof value !== 'string' || !trim(value);\n}\n\n/**\n * @name - trim\n * @description - Trims leading and trailing whitespace from the string.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {string} - The trimmed string.\n */\nexport function trim(value: string): string {\n // Any flavor of !value (ie. null/undefined/'') should return itself.\n if (!value || typeof value !== 'string') {\n return value;\n }\n\n if (value.trim) {\n return value.trim();\n }\n\n return value.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * @name - startsWith\n * @description - Determines if the specified string starts with the specified value.\n * @param ignoreCase\n * @export\n * @public\n * @param {string} value - The string to look in.\n * @param {string} prefix - The prefix to look for.\n * @returns {boolean} - True if the string starts with the prefix, otherwise false.\n */\nexport function startsWith(value: string, prefix: string, ignoreCase: boolean = true): boolean {\n if (!value || !prefix) {\n return false;\n }\n\n if (ignoreCase) {\n value = value.toLocaleLowerCase();\n prefix = prefix.toLocaleLowerCase();\n }\n\n if (value.startsWith) {\n return value.startsWith(prefix);\n }\n\n return value.startsWith(prefix);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\n\nexport interface IContentAction {\n pgname: string;\n mname: string;\n etext?: string;\n recid?: string;\n etype?: string;\n}\n\nexport interface IPayLoad {\n contentCategory: string;\n contentAction: IContentAction;\n}\n\nexport interface ITelemetryContent {\n pageName: string;\n moduleName: string;\n telemetry?: ITelemetry;\n}\n\nexport enum TelemetryConstant {\n ShopSimliarLooks = 'shop similar looks',\n ShopSimliarDescription = 'shop similar description',\n PickupInStore = 'pick up in store',\n PreferredStore = 'set as preferred store',\n RemovePreferredStore = 'remove preferred store',\n IncrementQuantity = 'Increment quantity',\n DecrementQuantity = 'Decrement quantity',\n Checkout = 'Checkout',\n GuestCheckout = 'Guest checkout',\n BackToShopping = 'Back to shopping',\n ApplyPromoCode = 'Apply promo code',\n ViewMore = 'View more',\n OrderDetails = 'Order details',\n AvailablePoints = 'Available points',\n ExpiringPoints = 'Expiring points',\n AddUser = 'Add user',\n BuyItAgain = 'Buy it again',\n ContactNumber = 'ContactNumber',\n CheckoutChange = 'Change',\n Save = 'Save',\n SaveContinue = 'Save and Continue',\n Cancel = 'Cancel',\n DeliveryOptions = 'Delivery options',\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\n ExpandAll = 'Expand all',\n CollapseAll = 'Collapse all',\n Expand = 'Expand',\n Collapse = 'Collapse',\n SignIn = 'Sign in',\n SignUp = 'Sign up',\n SignOut = 'Sign out',\n SwitchCustomer = 'Switch Customer',\n LoyaltyDetailLink = 'Loyalty detail ink',\n LoyaltyTermsLink = 'Loyalty terms link',\n LoyaltyTermsCancel = 'Loyalty terms cancel',\n LoyaltyTermsSubmit = 'Loyalty terms submit',\n LoyaltyTermsAgree = 'Loyalty terms agree',\n RemoveCartItem = 'Remove cart item',\n EditCart = 'Edit cart',\n BackToTop = 'Back to top',\n Logo = 'Logo',\n NavIcon = 'Navigation icon',\n ViewBagAndCheckout = 'View bag and checkout',\n ContinueShopping = 'Continue shopping',\n AddOrderTemplateToCart = 'Add order template to cart',\n PromoBannerClose = 'Close promo banner',\n WriteReview = 'Write Review',\n Next = 'Next',\n Previous = 'Previous',\n SubmitReview = 'Submit review',\n SuccessButton = 'Success',\n SearchStore = 'Search store',\n ShowAllStore = 'Show all store',\n ToggleMapView = 'Toggle map view',\n PrivacyPolicy = 'Privacy policy',\n ViewShoppingBag = 'View shopping bag',\n MyProfile = 'My profile',\n seeDetails = 'See Details',\n CurrentDistributor = 'Set as current distributor',\n ViewMode = 'View mode',\n ApplyRefiner = 'Apply Refiner',\n Search = 'Search'\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param pageName\n * @param {string} moduleName - Module Name.\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n * @param telemetry\n */\nexport function getTelemetryObject(pageName: string, moduleName: string, telemetry: ITelemetry): ITelemetryContent {\n const telemetryContent: ITelemetryContent = { pageName, moduleName, telemetry };\n return telemetryContent;\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param {string} moduleName - Module Name.\n * @param eventType\n * @param telemetryContent\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n */\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\n const payload: IPayLoad = {\n contentCategory: eventType,\n contentAction: {\n pgname: pageName,\n mname: moduleName,\n etext,\n recid,\n etype: eventType\n }\n };\n return payload;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param telemetryContent\n * @param {IPayLoad} payLoad - Pay Load.\n */\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\n const attributes: IDictionary | undefined =\n telemetryContent &&\n telemetryContent.telemetry &&\n telemetryContent.telemetry.setTelemetryAttribute &&\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\n return attributes;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param {IPayLoad} payLoad - Pay Load.\n */\n\nexport const onTelemetryClick = (telemetryContent: ITelemetryContent, payLoad: IPayLoad, linkText: string) => () => {\n payLoad.contentAction.etext = linkText;\n if (telemetryContent && telemetryContent.telemetry) {\n telemetryContent.telemetry.logEvent(TelemetryEvent.Custom, payLoad);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport interface IClientDimension {\n width: number;\n height: number;\n}\n\n/* A type safe Dictionary */\nexport interface IDictionaryStringString {\n [key: string]: string;\n}\n\n/**\n * @interface IGrid\n * @classdesc - The IGrid interface contract.\n * @export\n */\nexport interface IGrid {\n rows: number;\n columns: number;\n}\n\n/**\n * Clamp position between a range.\n * @param {number} value - Value to be clamped.\n * @param {number} min - Minimum value in range.\n * @param {number} max - Maximum value in range.\n * @returns The clap value if min passed is less than max else returns 0.\n */\nexport function clamp(value: number, min: number, max: number): number {\n if (min <= max) {\n return Math.min(Math.max(value, min), max);\n }\n return 0;\n}\n\n/**\n * Upper case the first letter of the string, if only one char exists on the string, uppercase it.\n * @param {string} value - Value to be upper cased.\n * @returns The upper cased string of the passed value, if it has just one char uppercase it.\n */\nexport function toUpperCaseFirstChar(value: string): string {\n if (value.length > 1) {\n return value.charAt(0).toUpperCase() + value.substr(1);\n }\n if (value.length === 1) {\n return value.charAt(0).toUpperCase();\n }\n return '';\n}\n\nexport function htmlCollectionToArray(nodeList: HTMLCollection): HTMLElement[] {\n return Array.prototype.slice.call(nodeList);\n}\n\nexport function getCSS(element: HTMLElement, property: string): string {\n let style = element.style[property];\n\n if (!style) {\n style = getComputedStyle(element)[property];\n }\n\n return style;\n}\n\nexport function createThrottledEvent(listener: EventListener, threshold: number): (event: Event) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n let last = 0;\n\n return (event: Event) => {\n const now = Date.now();\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n\n if (last && now < last + threshold) {\n timer = setTimeout(() => {\n last = Date.now();\n listener(event);\n }, threshold - (now - last));\n } else {\n last = now;\n listener(event);\n }\n };\n}\n\nexport function addThrottledEvent(\n target: EventTarget,\n name: string,\n listener: EventListener,\n threshold: number = 150\n): (event: Event) => void {\n const throttledEventHandler = createThrottledEvent(listener, threshold);\n target.addEventListener(name, throttledEventHandler, false);\n\n return throttledEventHandler;\n}\n\n/* RTS utilities */\n/* TODO: Using any here for now, need to convert cssmodules into a dictionary in all modules */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mapToCssModules(className: string = '', cssModule: any): string {\n if (!cssModule) {\n return className;\n }\n\n return className\n .split(' ')\n .map((c: string) => cssModule[c] || c)\n .join(' ');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isRef(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (>target).current !== undefined;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isElement(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (target).addEventListener !== undefined;\n}\n\nexport const keyCodes = {\n esc: 27,\n space: 32,\n tab: 9,\n up: 38,\n down: 40,\n enter: 13\n};\n\ninterface IMap {\n [key: string]: T;\n}\nconst warned: IMap = {};\n\nexport function warnOnce(message: string): void {\n if (!warned[message]) {\n if (typeof console !== 'undefined') {\n throw new Error(message);\n }\n warned[message] = true;\n }\n}\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport function findDOMElements(target: string): NodeListOf | string | null {\n try {\n if (typeof target === 'string' && canUseDOM) {\n let selection = document.querySelectorAll(target);\n\n if (selection.length === 0) {\n selection = document.querySelectorAll(`#${target}`);\n }\n\n if (selection.length === 0) {\n throw new Error();\n }\n return selection;\n }\n\n return target;\n } catch {\n console.error(`The target '${target}' could not be identified in the dom, tip: check spelling`);\n return null;\n }\n}\n\nexport function getTarget(target: string | HTMLElement | React.Ref): HTMLElement | React.Ref | null | string {\n const selection = findDOMElements(target);\n if (selection && selection.length > 0) {\n return selection[0];\n }\n\n return target;\n}\n\nexport function getTargetElement(target: string | HTMLElement | React.Ref): HTMLElement | null {\n const targetElement = getTarget(target);\n if (isRef(targetElement)) {\n return (>targetElement).current;\n }\n if (isElement(targetElement)) {\n return targetElement;\n }\n\n return null;\n}\n\nexport const TransitionTimeouts = {\n Fade: 150,\n Collapse: 350,\n Modal: 300,\n Carousel: 600\n};\n\nexport type TransitionStatuses = 'entering' | 'entered' | 'exiting' | 'exited';\n\nexport const focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '[tabindex]:not(.modal)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])'\n];\n\n/**\n * @name - extend\n * @description - extends an object with properties/values from one or more others.\n * @export\n * @public\n * @param {any[]} parameters - The objects to merge together.\n * @returns {any} - The extended object.\n */\n\n// eslint-disable-next-line complexity, @typescript-eslint/no-explicit-any\nexport function extend(...parameters: any[]): any {\n if (!parameters || parameters.length === 0) {\n return null;\n }\n\n const recursive = typeof parameters[0] === 'boolean' && parameters[0];\n\n if (parameters.length < 2) {\n return recursive ? null : parameters[0];\n }\n\n if (recursive && parameters.length < 3) {\n return parameters[1];\n }\n\n const target = recursive ? parameters[1] : parameters[0];\n\n for (let paramIndex = recursive ? 2 : 1; paramIndex < parameters.length; paramIndex++) {\n if (parameters[paramIndex] !== undefined) {\n for (const key of Object.keys(parameters[paramIndex])) {\n if (parameters[paramIndex].hasOwnProperty(key)) {\n const source = parameters[paramIndex][key];\n\n if (recursive) {\n let isSourceArray = Array.isArray ? Array.isArray(source) : {}.toString.call(source) === '[object Array]';\n let isTargetArray =\n !!target[key] &&\n (Array.isArray ? Array.isArray(target[key]) : {}.toString.call(target[key]) === '[object Array]');\n let isSourceObject = !isSourceArray && typeof source === 'object';\n let isTargetObject = !isTargetArray && !!target[key] && typeof target[key] === 'object';\n\n if (isSourceArray && isTargetArray) {\n for (const [arrayIndex, element] of source.entries()) {\n isSourceArray = Array.isArray ? Array.isArray(element) : {}.toString.call(element) === '[object Array]';\n isTargetArray =\n !!target[key][arrayIndex] &&\n (Array.isArray\n ? Array.isArray(target[key][arrayIndex])\n : {}.toString.call(target[key][arrayIndex]) === '[object Array]');\n isSourceObject = !isSourceArray && typeof element === 'object';\n isTargetObject = !isTargetArray && !!target[key][arrayIndex] && typeof target[key][arrayIndex] === 'object';\n\n if (isSourceArray) {\n target[key][arrayIndex] = extend(true, isTargetArray ? target[key][arrayIndex] : [], element);\n } else if (isSourceObject) {\n target[key][arrayIndex] = extend(true, isTargetObject ? target[key][arrayIndex] : {}, element);\n } else {\n target[key][arrayIndex] = element;\n }\n }\n continue;\n } else if (isSourceArray) {\n target[key] = extend(true, [], source);\n continue;\n } else if (isSourceObject) {\n target[key] = extend(true, isTargetObject ? target[key] : {}, source);\n continue;\n }\n }\n\n target[key] = source;\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * @name - getDimensions\n * @description - Gets the dimension of an element.\n * @export\n * @param {HTMLElement} containerElement - The container element.\n * @returns {IClientDimension} - The client dimension.\n * {IClientDimension.width} - The client width\n * {IClientDimension.height} - The client height.\n */\nexport function getDimensions(containerElement: HTMLElement): IClientDimension | null {\n if (containerElement === null) {\n return null;\n }\n return {\n width: containerElement.clientWidth,\n height: containerElement.clientHeight\n };\n}\n\n/**\n * Updates the max quantity for cart line item to default if not configured.\n * @param currentMaxQuantityForCartLineItem - The current max quantity for cart line item.\n * @returns The updated max quantity for cart line item.\n */\nexport function updateMaxQuantityForCartLineItem(currentMaxQuantityForCartLineItem: number | undefined): number {\n const defaultMaxQuantity = 10;\n\n const updatedMaxQuantityForCartLineItem = currentMaxQuantityForCartLineItem || defaultMaxQuantity;\n\n return updatedMaxQuantityForCartLineItem;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\nexport interface IControlledDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * ControlledDrawer - This is a full width controlled collapse where the button glyph changes\n * when the drawer is open and closed. The toggle function can be managed by the parent.\n */\n\nexport default class ControlledDrawer extends React.PureComponent {\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n private isExpanded: boolean;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IDrawerProps) {\n super(props);\n const { openGlyph, closeGlyph } = this.props;\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.isExpanded = this.state.isOpen;\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName || '');\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || closeGlyph || '']);\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || '']);\n this.drawerCloseGlyph = classnames([this.drawerGlyphClass, closeGlyph || '']);\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n collapseProps.isOpen = this.isManuallyToggled ? this.state.isOpen : collapseProps.isOpen || false;\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className || '');\n this.isManuallyToggled = false;\n this.isExpanded = collapseProps.isOpen;\n this.setState({ isOpen: collapseProps.isOpen });\n this.payLoad.contentAction.etext = collapseProps.isOpen ? TelemetryConstant.Collapse : TelemetryConstant.Expand;\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const { toggleButtonText } = this.props;\n const drawerButtonTextClass = classnames('drawer__buttontext', this.props.toggleButtonClassName || '');\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this._generateTitle(classnames(drawerButtonTextClass, '__start'), toggleButtonText.toString())}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n const isStart = this.props.glyphPlacement === 'start';\n const additionalClassName = `__${isStart ? 'end' : 'start'}`;\n return (\n <>\n {isStart && this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this._generateTitle(classnames(drawerButtonTextClass, additionalClassName), this.props.toggleButtonText.toString())}\n \n );\n }\n\n private _generateTitle(titleLClassName: string, title: string): JSX.Element {\n if (this.props.onTextChange && this.props.requestContext) {\n return (\n \n );\n }\n return {title};\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n const glyphClass = `${collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isExpanded = !this.isExpanded;\n this.setState({ isOpen: this.isExpanded });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\n/**\n * Drawer State Interface\n */\nexport interface IDrawerState {\n isOpen: boolean;\n buttonText?: string;\n}\n\n/**\n * Glyph placement type.\n */\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class Drawer extends React.PureComponent {\n public state: IDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: props.collapseProps?.isOpen ?? false, buttonText: '' };\n this.drawerGlyphClass = classnames(\n 'drawer__glyph',\n\n this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : ''\n );\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : ''\n );\n this.drawerCloseGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n this.setState({\n isOpen: collapseProps.isOpen\n });\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames(\n 'drawer',\n\n this.props.className ? this.props.className : ''\n );\n this.isManuallyToggled = false;\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n /**\n * Method generate drawer inner markup.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this.props.toggleButtonText}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n if (this.props.glyphPlacement === 'start') {\n return (\n <>\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this.props.toggleButtonText}\n \n );\n }\n return {this.props.toggleButtonText};\n }\n\n /**\n * Method generate glyph markup.\n * @param location -Glyph icon location.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n /**\n * Method on click of drawer button.\n * @param e -Mouse event for drawer button.\n */\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isManuallyToggled = true;\n\n if (this.props.onToggle) {\n this.setState(\n { isOpen: !this.state.isOpen, buttonText: e.currentTarget.innerText },\n () => this.props.onToggle && this.props.onToggle(this.state)\n );\n } else {\n this.setState({ isOpen: !this.state.isOpen });\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING, UNMOUNTED } from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionTimeouts } from '../common/utilities';\nimport { IFadeProps } from './Fade.props';\n\nexport interface IFadeState {\n fadeIn: boolean;\n}\n\ntype TransitionStatus = typeof ENTERING | typeof ENTERED | typeof EXITING | typeof EXITED | typeof UNMOUNTED;\n\n/**\n * Fade component.\n */\nexport default class Fade extends React.Component {\n public static defaultProps: Partial = {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n in: true,\n appear: true,\n enter: true,\n exit: true\n };\n\n public shouldComponentUpdate(nextProps: IFadeProps): boolean {\n if (nextProps.in || this.props.in !== nextProps.in) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n className,\n cssModule,\n baseClass,\n baseClassActive,\n\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout: timeoutOrUndefined,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children,\n\n ...otherProps\n } = this.props;\n const timeout = timeoutOrUndefined !== undefined ? timeoutOrUndefined : TransitionTimeouts.Fade;\n\n const transitionProps = {\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children\n };\n\n const Tag = this.props.tag ? this.props.tag : 'div';\n const baseClassAlways = baseClass || 'fade';\n const baseClassActiveAlways = baseClassActive || 'show';\n\n return (\n \n {(status: TransitionStatus) => {\n const isActive = status === 'entered';\n const classes = mapToCssModules(classNames([className, baseClassAlways, isActive && baseClassActiveAlways]), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, UncontrolledTooltip } from '..';\nimport { IFlipperProps } from './Flipper.props';\n\nexport type FlipperSize = 'small' | 'medium' | 'large';\n\n/**\n * Flipper Component - This component is used to add\n * flippers to a carousel/jumbotron.\n */\nexport default class Flipper extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IFlipperProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, this.props.telemetryLabel!);\n }\n\n public render(): JSX.Element {\n const { className, glyphProps, size, displayTooltip, disabled, telemetryContent, telemetryLabel, ...props } = this.props;\n const sizeClass = size === 'small' ? 'msc-flipper__small' : size === 'large' ? 'msc-flipper__large' : '';\n const classNames = className ? `msc-flipper ${sizeClass} ${className}` : `msc-flipper ${sizeClass}`;\n const attribute = getTelemetryAttributes(telemetryContent!, this.payLoad);\n\n // Do not flip next/previous glyphs in RTL (commonly chevron-left and chevron-right)\n glyphProps.className = `${glyphProps.className} msc-no-rtl-flip-required`;\n\n return (\n <>\n \n {displayTooltip && !disabled && (\n \n {' '}\n {props['aria-label']}\n \n )}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, Dictionary, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Button from '../button/Button';\nimport { IFormKeyProps } from './form-builder.props';\n\n/**\n * The state of the form builder.\n */\nexport interface IFormBuilderState {\n /**\n * The captured values.\n */\n values: string[];\n\n /**\n * If the form has been submitted.\n */\n isSubmitted: boolean;\n}\n\n/**\n * The properties of the form builder.\n */\nexport interface IFormBuilderProps {\n /**\n * The component showing confirmation after form submitted successfully.\n */\n confirmationComponent: React.ReactNode;\n\n /**\n * The heading for the component shown above the input boxes.\n */\n heading: string;\n\n /**\n * The text shown on the submit button.\n */\n submitButtonText: string;\n\n /**\n * The keys of the form values to capture, which will be shown as labels for the inputs.\n */\n keys: IFormKeyProps[];\n\n /**\n * The error message shown when submitting the form and required value is missing.\n */\n requiredValueMissingErrorMessage: string;\n\n /**\n * The action to perform when the form is submitted.\n * @param { formKey: IFormKeyProps, value: string[] } entry - The form data as key-value pairs to submit.\n */\n onSubmit(entry?: { formKey: IFormKeyProps; value: string }[]): Promise;\n}\n\n/**\n * The interface for properties of form builder error.\n */\nexport interface IFormBuilderErrorProps {\n errorMessage?: string;\n}\n\n/**\n * The error component in form builder.\n * @param errorProperties - The error properties.\n * @param errorProperties.errorMessage - The error message to show.\n * @returns The error component.\n */\nexport const FormBuilderErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n {errorMessage}\n \n );\n};\n\n/**\n * The component to capture form data.\n */\nexport class FormBuilder extends React.Component {\n private readonly requiredValueMissing: Dictionary;\n\n public constructor(props: IFormBuilderProps) {\n super(props);\n this.state = { values: this.props.keys.map(() => ''), isSubmitted: false };\n\n // Setup a boolean dictionary to keep track if required value is missing for every field to submit.\n this.requiredValueMissing = new Dictionary();\n for (const formKey of this.props.keys) {\n if (formKey.resourceId) {\n this.requiredValueMissing.setValue(formKey.resourceId, formKey.isRequired ?? false);\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: IFormBuilderProps, nextState: IFormBuilderState): boolean {\n if (\n this.props.heading !== nextProps.heading ||\n this.props.confirmationComponent !== nextProps.confirmationComponent ||\n this.props.submitButtonText !== nextProps.submitButtonText ||\n this.props.requiredValueMissingErrorMessage !== nextProps.requiredValueMissingErrorMessage\n ) {\n return true;\n }\n\n // If any form key has changed, the component should update.\n if (\n !this.props.keys.every((formKey: IFormKeyProps, index: number) => {\n return (\n nextProps.keys[Number(index)].isRequired === formKey.isRequired &&\n nextProps.keys[Number(index)].resourceId === formKey.resourceId &&\n nextProps.keys[Number(index)].resourceValue === formKey.resourceValue\n );\n })\n ) {\n return true;\n }\n\n // If any value has changed, the component should update.\n if (\n this.state.isSubmitted !== nextState.isSubmitted ||\n !this.state.values.every((value: string, index: number) => {\n return value === nextState[Number(index)];\n })\n ) {\n return true;\n }\n\n return false;\n }\n\n public render(): JSX.Element {\n return (\n <>\n {!this.state.isSubmitted && ArrayExtensions.hasElements(this.props.keys) && (\n
\n

{this.props.heading}

\n
\n \n {this.props.keys\n .filter((formKey: IFormKeyProps) => {\n return (\n !ObjectExtensions.isNullOrUndefined(formKey.resourceId) &&\n !ObjectExtensions.isNullOrUndefined(formKey.resourceValue)\n );\n })\n .map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return (\n
\n \n {`${formKey.resourceValue!}${formKey.isRequired ? ' *' : ''}`}\n {this.requiredValueMissing.getValue(formKey.resourceId!) && (\n \n )}\n \n \n
\n );\n })}\n
\n \n {this.props.submitButtonText}\n \n
\n \n
\n
\n )}\n {this.state.isSubmitted && this.props.confirmationComponent}\n \n );\n }\n\n private get isAnyRequiredValueMissing(): boolean {\n const notFound: number = -1;\n return this.requiredValueMissing.getValues().findIndex((isMissing: boolean) => isMissing) !== notFound;\n }\n\n /**\n * The action to perform when the submit button is clicked.\n * @param event - The click event.\n * @returns The async result.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n const formData: { formKey: IFormKeyProps; value: string }[] = this.props.keys.map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return {\n formKey: { resourceId: formKey.resourceId!, resourceValue: formKey.resourceValue },\n value: currentValue\n };\n });\n await this.props.onSubmit(formData);\n this.setState((previousState: Readonly) => {\n return { values: previousState.values, isSubmitted: true };\n });\n };\n\n /**\n * The action to perform when any input in the form has changed.\n * @param event - The input change event.\n * @returns The async result.\n */\n private readonly _onInputChange = async (event: React.ChangeEvent): Promise => {\n event.preventDefault();\n const changedValueIndex: number = Number.parseInt(event.target.getAttribute('data-index') ?? '', 10);\n if (ObjectExtensions.isNullOrUndefined(changedValueIndex)) {\n return Promise.reject(new Error('form-builder: invalid value index.'));\n }\n const newState = {\n values: this.state.values.map((value: string, index: number) => {\n const currentKey: IFormKeyProps = this.props.keys[Number(index)];\n if (index === changedValueIndex && currentKey.resourceId) {\n this.requiredValueMissing.setValue(\n currentKey.resourceId,\n (currentKey.isRequired ?? false) && event.target.value === ''\n );\n return event.target.value;\n }\n return value;\n })\n };\n this.setState(newState);\n return Promise.resolve();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingProps } from './Heading.props';\n\n/**\n * Heading component.\n * @extends {React.PureComponent}\n */\n\nconst Heading = ({ headingTag: HTag = 'h1', tag: Tag, className, text }: IHeadingProps) =>\n Tag ? {text} : {text};\n\nexport default Heading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isMobile, VariantType } from '..';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '../common/telemetryHelper';\nimport { IIncrementalQuantityProps } from './IncrementalQuantity.props';\n\n/**\n * IIncrementalQuantityState interface.\n */\ninterface IIncrementalQuantityState {\n currentInput: number;\n isUpdating: boolean;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class IncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private _minValue: number;\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n public static getDerivedStateFromProps(\n props: Readonly,\n state: IIncrementalQuantityState\n ): IIncrementalQuantityState {\n const nextState = { ...state };\n\n if (props.disabled && !state.isUpdating) {\n nextState.isUpdating = true;\n }\n\n if (\n (!props.disabled && state.isUpdating) ||\n ((props.applyDefaultOrderSettings ?? false) &&\n state.currentInput === 1 &&\n props.currentCount &&\n props.currentCount > IncrementalQuantity.defaultProps.min!)\n ) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n\n return nextState;\n }\n\n constructor(props: IIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\n }\n\n public render(): JSX.Element {\n const { min, max } = this.props;\n\n this._minValue = min ?? IncrementalQuantity.defaultProps.min!;\n const value = this.state.currentInput;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = value <= this._minValue || this.props.isGiftCard;\n const incrementDisabled = value >= max || this.props.isGiftCard;\n const currentValue = value;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${value}`;\n\n let extraClassDecrement = '';\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n }\n let extraClassIncrement = '';\n if (incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n \n );\n }\n\n /**\n * It checks if its in mobile view or not.\n * @returns Boolean.\n */\n private readonly isMobileView = (): boolean => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\n };\n\n private _onIncrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity >= this._minValue) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this._minValue;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n let currentValue = Number.parseInt(e.target.value, 10);\n if (Number.isNaN(currentValue)) {\n this.setState({ currentInput: currentValue });\n return;\n }\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\n this.setState({ currentInput: currentValue });\n debounce(() => {\n // Due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\n inputElement.setAttribute('value', this.state.currentInput.toString());\n }\n }, 1000)();\n }\n\n /**\n * Validates min and updates.\n */\n private readonly _validateMin = (): void => {\n if (Number.isNaN(this.state.currentInput)) {\n this.setState({ currentInput: this._minValue });\n } else {\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\n if (currentValue !== this.state.currentInput) {\n this.setState({ currentInput: currentValue });\n }\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\n\nimport { IMobileProps, VariantType } from './isMobile.props';\n\n/**\n * IsMobile component.\n * @param props\n */\nexport const isMobile = (props: IMobileProps) => {\n const { variant, context } = props;\n switch (variant) {\n case VariantType.Browser:\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context?.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'lg';\n case VariantType.Viewport:\n const viewport = context?.device?.Type === 'Mobile' ? 'xs' : 'lg';\n return viewport;\n default:\n return 'lg';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nexport enum VariantType {\n Browser,\n Viewport\n}\n\n/**\n * IsMobile properties.\n */\nexport interface IMobileProps {\n /**\n * Contains variant i.e browser | viewport.\n */\n variant?: VariantType;\n context?: Msdyn365.IRequestContext;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ILabeledDropdownProps } from './LabeledDropdown.props';\n\nexport interface ILabeledDropdownState {\n selectedIndex: number;\n}\n\n/**\n * Labeled Dropdown component.\n */\nexport default class LabeledDropdown extends React.PureComponent {\n public static defaultProps: Partial = {\n toggleColor: 'link'\n };\n\n constructor(props: ILabeledDropdownProps) {\n super(props);\n this._onSelectOption = this._onSelectOption.bind(this);\n const selectedKey = this.props.selectedOption.key;\n const keys = this.props.dropdownOptions.map(option => option.key);\n this.state = { selectedIndex: keys.indexOf(selectedKey) };\n }\n\n public render(): JSX.Element {\n const { labelText, labelClassname, dropdownId, dropdownOptions, dropdownClassname } = this.props;\n\n const labelClassNames = classNames('msc-l-dropdown__label', labelClassname);\n const dropdownClassNames = classNames('msc-l-dropdown', dropdownClassname);\n const selectedIndex = this._getSelectedIndex();\n\n return (\n <>\n \n \n \n );\n }\n\n private _getSelectedIndex(): number {\n if (this.props.controlledByParent) {\n let selectedIndex = -1;\n const selectedKey = this.props.selectedOption.key;\n for (let i = 0; i < this.props.dropdownOptions.length; i++) {\n if (this.props.dropdownOptions[i].key === selectedKey) {\n selectedIndex = i;\n break;\n }\n }\n\n return selectedIndex;\n }\n\n return this.state.selectedIndex;\n }\n\n private _onSelectOption(event: React.ChangeEvent): void {\n const { dropdownOptions, onSelectOption } = this.props;\n const index = event.currentTarget.selectedOptions[0].index;\n const selectedOption = dropdownOptions[index];\n this.setState({ selectedIndex: index });\n onSelectOption({ selectedOption });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { canUseDOM } from '../common/utilities';\nimport { IPortalProps } from './Portal.props';\n\nexport interface IPortalState {\n defaultNode: Element | null;\n}\n\n/**\n * Portal component.\n */\nexport default class Portal extends React.PureComponent {\n constructor(props: IPortalProps) {\n super(props);\n\n this.state = {\n defaultNode: null\n };\n }\n\n public componentWillUnmount(): void {\n if (this.state.defaultNode) {\n this.state.defaultNode.remove();\n }\n }\n\n public render(): React.ReactPortal | null {\n let node = null;\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.state.defaultNode) {\n node = document.createElement('div');\n document.body.appendChild(node);\n this.setState({ defaultNode: node });\n }\n return createPortal(this.props.children, this.props.node || node);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { focusableElements, TransitionTimeouts } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport IModalProps from './Modal.props';\nimport Portal from './Portal';\n\nexport interface IModalState {\n wasOpen: boolean;\n isOpen: boolean;\n mouseDownElement: EventTarget | null;\n}\n\nexport type ModalVerticalPosition = 'top' | 'center' | 'bottom';\nexport type ModalHorizontalPosition = 'left' | 'center' | 'right';\n\n/**\n * Modal component.\n */\nexport default class Modal extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n autoFocus: true,\n verticalPosition: 'top', // Needs to be non-null since we use non-null assertion in getVerticalPositionClass\n horizontalPosition: 'center', // Needs to be non-null since we use non-null assertion in getHorizontalPositionClass\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1000,\n tabIndex: 0,\n fade: true,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // Uses standard fade transition\n }\n };\n\n private static openCount: number = 0;\n\n private element: HTMLElement | null;\n\n private mounted: boolean;\n\n private readonly ref: React.RefObject;\n\n /**\n * This property is initialized in componentDidMount rather than constructor in case the dialog needs to be pre-rendered.\n */\n private applicationNode!: HTMLElement | null;\n\n constructor(props: IModalProps) {\n super(props);\n this.element = null;\n this.ref = React.createRef();\n this.mounted = false;\n\n this._getFocusableChildren = this._getFocusableChildren.bind(this);\n this._handleBackdropClick = this._handleBackdropClick.bind(this);\n this._handleBackdropMouseDown = this._handleBackdropMouseDown.bind(this);\n this._handleEscape = this._handleEscape.bind(this);\n this._handleTab = this._handleTab.bind(this);\n this._onOpened = this._onOpened.bind(this);\n this._onClosed = this._onClosed.bind(this);\n\n this.state = {\n wasOpen: false,\n isOpen: props.isOpen || false,\n mouseDownElement: null\n };\n\n if (props.isOpen) {\n this._open();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.onEnter) {\n this.props.onEnter();\n }\n this.mounted = true;\n\n const element = document.createElement('div');\n element.setAttribute('tabindex', '-1');\n element.style.visibility = 'hidden';\n element.style.position = 'position';\n this.element = element;\n document.body.appendChild(element);\n\n this.applicationNode =\n this.props.applicationNode instanceof HTMLElement\n ? this.props.applicationNode\n : document.querySelector(`#${this.props.applicationNode}`);\n\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n }\n\n public componentWillUnmount(): void {\n if (this.props.onExit) {\n this.props.onExit();\n }\n if (this.state.isOpen) {\n this._close();\n }\n this.mounted = false;\n\n if (this.element) {\n this.element.remove();\n }\n }\n\n public componentDidUpdate(_prevProps: IModalProps, prevState: IModalState): void {\n if (\n (this.state.isOpen && !prevState.isOpen) ||\n (this.props.shouldUpdateFocusToFirstElement && !_prevProps.shouldUpdateFocusToFirstElement)\n ) {\n setTimeout(() => {\n const focusableElementArr = this._getFocusableChildren();\n if (focusableElementArr && focusableElementArr.length > 0 && focusableElementArr[0]) {\n const firstFocusableElement = focusableElementArr[0] as HTMLElement;\n firstFocusableElement.focus();\n }\n }, 100);\n }\n }\n // eslint-disable-next-line react/no-deprecated\n public componentWillReceiveProps(nextProps: IModalProps): void {\n if (nextProps.isOpen && !this.props.isOpen) {\n this.setState({ isOpen: nextProps.isOpen });\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n if (this.element !== null) {\n const {\n wrapClassName,\n modalClassName,\n backdropClassName,\n contentClassName,\n className,\n cssModule,\n modalTransition,\n backdropTransition,\n backdrop,\n isOpen,\n onOpened,\n onClosed,\n role,\n size,\n tabIndex,\n external,\n verticalPosition,\n horizontalPosition,\n keyboard,\n zIndex,\n fade,\n toggle,\n children,\n applicationNode,\n returnFocusRef,\n 'aria-labelledby': ariaLabelledbyId,\n ...dialogAttributes\n } = this.props;\n\n const modalAttributes = {\n onClick: this._handleBackdropClick,\n onMouseDown: this._handleBackdropMouseDown,\n onKeyUp: this._handleEscape,\n onKeyDown: this._handleTab,\n style: { display: 'block' }\n };\n\n const modalTransitions = {\n ...Fade.defaultProps,\n ...modalTransition,\n baseClass: fade && modalTransition ? modalTransition.baseClass : '',\n timeout: fade && modalTransition ? modalTransition.timeout : 0\n };\n const backdropTransitions = {\n ...Fade.defaultProps,\n ...backdropTransition,\n baseClass: fade && backdropTransition ? backdropTransition.baseClass : '',\n timeout: fade && backdropTransition ? backdropTransition.timeout : 0\n };\n\n const Backdrop = fade ? (\n \n ) : (\n
\n );\n\n const dialogBaseClass = 'msc-modal__dialog';\n const dialogClasses = classNames([dialogBaseClass, className, size ? `msc-modal__${size}` : null]);\n\n const dialog = (\n \n
\n {children}\n
\n
\n );\n\n return (\n \n
\n \n {external}\n {dialog}\n \n {Backdrop}\n
\n
\n );\n }\n\n return null;\n }\n\n private _open(): void {\n if (this.element) {\n this.element.style.zIndex = `${this.props.zIndex || 1000}`;\n this.element.style.display = 'block';\n this.element.style.visibility = 'visible';\n if (Modal.openCount === 0) {\n if (window) {\n const scrollY = window.scrollY;\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrollY}px`;\n document.body.style.right = `${scrollbarWidth}px`;\n document.body.style.left = '0px';\n }\n\n document.body.className = classNames(document.body.className, 'modal-open');\n }\n Modal.openCount += 1;\n document.body.firstElementChild?.setAttribute('aria-hidden', 'true');\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'true');\n }\n\n this.setState({ ...this.state, wasOpen: true });\n }\n }\n\n private _close(): void {\n if (!this.state.isOpen) {\n return;\n }\n\n if (this.element) {\n this.element.style.display = 'none';\n setTimeout(() => {\n if (this.element) {\n this.element.style.visibility = 'hidden';\n this.element.style.removeProperty('display');\n }\n }, 0);\n }\n\n if (Modal.openCount <= 1) {\n const modalOpenClassName = 'modal-open';\n document.body.firstElementChild?.setAttribute('aria-hidden', 'false');\n\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n const modalOpenClassNameRegex = new RegExp(`(^| )${modalOpenClassName}( |$)`);\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n\n if (window) {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.right = '';\n document.body.style.left = '';\n window.scrollTo(0, -Number.parseInt(scrollY || '0', 10));\n }\n }\n Modal.openCount -= 1;\n\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'false');\n }\n\n if (this.props.returnFocusRef && this.props.returnFocusRef.current) {\n this.props.returnFocusRef.current.focus();\n }\n\n this.setState({ ...this.state, wasOpen: false });\n }\n\n private _getFocusableChildren(): NodeListOf | null {\n if (this.element === null) {\n return null;\n }\n\n return this.element.querySelectorAll(focusableElements.join(', '));\n }\n\n private _getFocusedChild(): Element | null {\n const focusableChildren = this._getFocusableChildren();\n\n try {\n return document.activeElement;\n } catch {\n return focusableChildren === null ? null : focusableChildren[0];\n }\n }\n\n private _handleBackdropClick(e: React.MouseEvent): void {\n if (e.target === this.state.mouseDownElement) {\n e.stopPropagation();\n if (!this.props.isOpen || this.props.backdrop !== true) {\n return;\n }\n\n const container = this.ref.current;\n\n if (e.target && container && !container.contains(e.target as Node) && this.props.toggle) {\n this.props.toggle();\n }\n }\n }\n\n private _handleTab(e: React.KeyboardEvent): void {\n if (e.which !== 9) {\n return;\n }\n\n const focusableChildren = this._getFocusableChildren();\n if (focusableChildren === null) {\n return;\n }\n\n const totalFocusable = focusableChildren.length;\n const currentFocus = this._getFocusedChild();\n\n let focusedIndex = 0;\n\n for (let i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n let el: HTMLElement | null = null;\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n el = focusableChildren[totalFocusable - 1] as HTMLElement;\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n el = focusableChildren[0] as HTMLElement;\n }\n if (el) {\n el.focus();\n }\n }\n\n private _handleBackdropMouseDown(e: React.MouseEvent): void {\n this.setState({\n mouseDownElement: e.target\n });\n }\n\n private _handleEscape(e: React.KeyboardEvent): void {\n if (this.props.isOpen && this.props.keyboard && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _onOpened(node: HTMLElement, isAppearing: boolean): void {\n if (this.props.onOpened !== undefined) {\n this.props.onOpened();\n }\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onEntered !== undefined) {\n this.props.modalTransition.onEntered(node, isAppearing);\n }\n }\n\n private _onClosed(node: HTMLElement): void {\n if (this.props.onClosed !== undefined) {\n this.props.onClosed();\n }\n this._close();\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onExited !== undefined) {\n this.props.modalTransition.onExited(node);\n }\n if (this.mounted) {\n this.setState({ isOpen: false });\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalBodyProps from './ModalBody.props';\n\n/**\n * ModalBody component.\n */\nexport default class ModalBody extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, id, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__body'), cssModule);\n return ;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalFooterProps from './ModalFooter.props';\n\n/**\n * ModalFooter component.\n */\nexport default class ModalFooter extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__footer'), cssModule);\n return ;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalHeaderProps from './ModalHeader.props';\n\n/**\n * ModalHeader component.\n */\nexport default class ModalHeader extends React.PureComponent {\n public render(): JSX.Element {\n let closeButton;\n const { className, cssModule, children, toggle, tag, wrapTag, closeAriaLabel, closeButtonLabel, id, ...attributes } = this.props;\n\n const Tag = tag || 'h5';\n const WrapTag = wrapTag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__header'), cssModule);\n\n if (toggle) {\n closeButton = (\n \n );\n }\n\n return (\n \n {children && {children}}\n {closeButton}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationProps } from './Pagination.props';\n\n/**\n * Pagination component.\n */\nexport default class Pagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination'\n };\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n listClassName,\n cssModule,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationItemProps } from './PaginationItem.props';\n\n/**\n * PaginationItem component.\n */\nexport default class PaginationItem extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'li'\n };\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { active, className, cssModule, disabled, tag: Tag, ...props }: any = this.props;\n\n const paginationItemClasses = mapToCssModules(\n classNames(className, 'msc-page-item', {\n active,\n disabled\n }),\n cssModule\n );\n\n return ;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad } from '../common/telemetryHelper';\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationLinkProps } from './PaginationLink.props';\n\n/**\n * PaginationLink component.\n */\nexport default class PaginationLink extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'a',\n role: 'link'\n };\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPaginationLinkProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n }\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let { className, cssModule, next, previous, tag: Tag, children, telemetryContent, ...props }: any = this.props;\n let etext: string = children;\n const paginationLinkclasses = mapToCssModules(classNames(className, 'msc-page-link'), cssModule);\n\n let defaultCaret;\n if (previous) {\n defaultCaret = '\\u00AB';\n etext = 'previous';\n } else if (next) {\n defaultCaret = '\\u00BB';\n etext = 'next';\n }\n\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n if (!props.href && Tag === 'a') {\n Tag = 'span';\n }\n\n if (previous || next) {\n children = [{children || defaultCaret}];\n }\n\n this.payLoad.contentAction.etext = etext;\n const attribute = getTelemetryAttributes(telemetryContent, this.payLoad);\n\n return (\n \n {children}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { mapToCssModules } from '../common/utilities';\nimport PaginationItem from './PaginationItem';\nimport PaginationLink from './PaginationLink';\nimport { IUncontrolledPaginationProps } from './UncontrolledPagination.props';\n\n/**\n * Uncontrolled Pagination component.\n */\nexport default class UncontrolledPagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination',\n items: 0,\n itemsPerPage: 25,\n startingItem: 0\n };\n\n private static readonly pagesDisplayed: number = 7;\n\n private maxPages: number;\n\n private activePage: number = 0;\n\n private qsps: { [param: string]: string };\n\n private url: string;\n\n private hash: string;\n\n constructor(props: IUncontrolledPaginationProps) {\n super(props);\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const qsp of parsedQsps) {\n const qspPair = qsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n }\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n baseUrl,\n qsp,\n items,\n itemsPerPage,\n startingItem,\n previousText,\n nextText,\n previousAriaLabel,\n nextAriaLabel,\n listClassName,\n cssModule,\n children,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const activeQsp of parsedQsps) {\n const qspPair = activeQsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n {this._generatePageLinks()}\n \n \n );\n }\n\n private _generateUrl(page: number): string {\n const items = this.props.itemsPerPage! * page;\n const keys = Object.keys(this.qsps);\n let qspUrl = page > 0 ? `?${this.props.qsp}=${items}` : '';\n\n keys.forEach((key: string) => {\n qspUrl = qspUrl ? `${qspUrl}&${key}=${this.qsps[key]}` : `?${key}=${this.qsps[key]}`;\n });\n\n return this.url + qspUrl + this.hash;\n }\n\n private _generatePaginationArrow(next: boolean, disable: boolean, className: string): React.ReactElement {\n const url = disable ? undefined : this._generateUrl(this.activePage + (next ? 1 : -1));\n const tooltipId = next ? this.props.nextId : this.props.prevId;\n const ariaDescribedBy = next ? this.props.nextAreaDescribed : this.props.prevAreaDescribed;\n const placement = next ? 'right' : 'left';\n const tag = disable ? 'span' : 'a';\n\n return (\n \n \n {next ? this.props.nextText : this.props.previousText}\n \n {tooltipId && (\n \n {next ? 'next' : 'previous'}\n \n )}\n \n );\n }\n\n private _generatePaginationItem(page: number): React.ReactElement {\n const active = this.activePage === page;\n const url = this._generateUrl(page);\n page += 1;\n\n return (\n \n \n {page}\n \n \n );\n }\n\n private _generateEllipse(): React.ReactElement {\n return (\n \n ...\n \n );\n }\n\n private _generatePageLinks(): React.ReactFragment {\n const displayCountSide = 3;\n let leftDistance = this.activePage;\n let rightDistance = this.maxPages - this.activePage - 1;\n const leftEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && leftDistance > 3;\n const rightEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && rightDistance > 3;\n\n leftDistance = Math.min(leftDistance, displayCountSide);\n rightDistance = Math.min(rightDistance, displayCountSide);\n const pages = [];\n const ellipseOffset = leftEllipse ? -1 : 0;\n const displayedPagesOnLeft = leftDistance + (displayCountSide - rightDistance) + ellipseOffset;\n const startingIndex = Math.max(this.activePage - displayedPagesOnLeft, 0);\n const endIndex = Math.min(\n startingIndex + 5 + (rightEllipse ? 0 : 1) + (leftEllipse ? 0 : 1),\n rightEllipse ? this.maxPages - 1 : this.maxPages\n );\n\n if (leftEllipse) {\n pages.push(this._generatePaginationItem(0));\n pages.push(this._generateEllipse());\n }\n\n for (let i = startingIndex; i < endIndex; i++) {\n pages.push(this._generatePaginationItem(i));\n }\n\n if (rightEllipse) {\n pages.push(this._generateEllipse());\n pages.push(this._generatePaginationItem(this.maxPages - 1));\n }\n\n return (\n <>\n {this._generatePaginationArrow(false, this.activePage === 0, 'previous')}\n {pages}\n {this._generatePaginationArrow(true, this.activePage === this.maxPages - 1, 'next')}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { canUseDOM, getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { IPopoverProps } from './Popover.props';\n\n/**\n * Popover component.\n */\nexport default class Popover extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n placement: 'right',\n toggle: () => {\n return;\n }\n };\n\n public props: IPopoverProps;\n\n private target: HTMLElement | null;\n\n private popover: HTMLDivElement | null;\n\n private tabPressed: boolean = false;\n\n constructor(props: IPopoverProps) {\n super(props);\n this.props = props;\n\n this.popover = null;\n this._addTargetEvents = this._addTargetEvents.bind(this);\n this._handleDocumentClick = this._handleDocumentClick.bind(this);\n this._removeTargetEvents = this._removeTargetEvents.bind(this);\n this.getRef = this.getRef.bind(this);\n this._toggle = this._toggle.bind(this);\n this._focusOutTarget = this._focusOutTarget.bind(this);\n this._focusOutPopover = this._focusOutPopover.bind(this);\n this._keyDown = this._keyDown.bind(this);\n this._show = this._show.bind(this);\n this._hide = this._hide.bind(this);\n this.target = null;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this._handleProps();\n }\n\n public componentDidUpdate(): void {\n this._handleProps();\n }\n\n public componentWillUnmount(): void {\n this._removeTargetEvents();\n }\n\n public getRef(ref: HTMLDivElement | null): void {\n this.popover = ref;\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n className,\n innerClassName,\n modifiers,\n placement,\n container,\n offset,\n toggle,\n boundariesElement,\n role,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames('msc-popover-inner', this.props.innerClassName), this.props.cssModule);\n\n const popperClasses = mapToCssModules(classNames('msc-popover', 'show', this.props.className), this.props.cssModule);\n\n return (\n \n
\n \n );\n }\n\n private _handleProps(): void {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n\n private _show(): void {\n this.tabPressed = false;\n this._addTargetEvents();\n if (!this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _hide(): void {\n this._removeTargetEvents();\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n\n if (\n e.target !== this.target &&\n !this.target.contains(target) &&\n e.target !== this.popover &&\n !(this.popover && this.popover.contains(target))\n ) {\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n }\n\n private _addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this._handleDocumentClick, true);\n });\n this.target.addEventListener('focusout', this._focusOutTarget, true);\n this.target.addEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this._handleDocumentClick, true);\n });\n this.target.removeEventListener('focusout', this._focusOutTarget, true);\n this.target.removeEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _focusOutPopover(): void {\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n\n private _focusOutTarget(): void {\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n }\n\n private _keyDown(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (this.props.isOpen && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _toggle(): void {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n}\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Manager = function (_Component) {\n _inherits(Manager, _Component);\n\n function Manager() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Manager);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Manager.__proto__ || Object.getPrototypeOf(Manager)).call.apply(_ref, [this].concat(args))), _this), _this._setTargetNode = function (node) {\n _this._targetNode = node;\n }, _this._getTargetNode = function () {\n return _this._targetNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Manager, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n popperManager: {\n setTargetNode: this._setTargetNode,\n getTargetNode: this._getTargetNode\n }\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n tag = _props.tag,\n children = _props.children,\n restProps = _objectWithoutProperties(_props, ['tag', 'children']);\n\n if (tag !== false) {\n return createElement(tag, restProps, children);\n } else {\n return children;\n }\n }\n }]);\n\n return Manager;\n}(Component);\n\nManager.childContextTypes = {\n popperManager: PropTypes.object.isRequired\n};\nManager.propTypes = {\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\nManager.defaultProps = {\n tag: 'div'\n};\n\n\nexport default Manager;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport { createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Target = function Target(props, context) {\n var _props$component = props.component,\n component = _props$component === undefined ? 'div' : _props$component,\n innerRef = props.innerRef,\n children = props.children,\n restProps = _objectWithoutProperties(props, ['component', 'innerRef', 'children']);\n\n var popperManager = context.popperManager;\n\n var targetRef = function targetRef(node) {\n popperManager.setTargetNode(node);\n if (typeof innerRef === 'function') {\n innerRef(node);\n }\n };\n\n if (typeof children === 'function') {\n var targetProps = { ref: targetRef };\n return children({ targetProps: targetProps, restProps: restProps });\n }\n\n var componentProps = _extends({}, restProps);\n\n if (typeof component === 'string') {\n componentProps.ref = targetRef;\n } else {\n componentProps.innerRef = targetRef;\n }\n\n return createElement(component, componentProps, children);\n};\n\nTarget.contextTypes = {\n popperManager: PropTypes.object.isRequired\n};\n\nTarget.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\n\nexport default Target;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport PopperJS from 'popper.js';\n\nexport var placements = PopperJS.placements;\n\nvar Popper = function (_Component) {\n _inherits(Popper, _Component);\n\n function Popper() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Popper);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Popper.__proto__ || Object.getPrototypeOf(Popper)).call.apply(_ref, [this].concat(args))), _this), _this.state = {}, _this._setArrowNode = function (node) {\n _this._arrowNode = node;\n }, _this._getTargetNode = function () {\n if (_this.props.target) {\n return _this.props.target;\n } else if (!_this.context.popperManager || !_this.context.popperManager.getTargetNode()) {\n throw new Error('Target missing. Popper must be given a target from the Popper Manager, or as a prop.');\n }\n return _this.context.popperManager.getTargetNode();\n }, _this._getOffsets = function (data) {\n return Object.keys(data.offsets).map(function (key) {\n return data.offsets[key];\n });\n }, _this._isDataDirty = function (data) {\n if (_this.state.data) {\n return JSON.stringify(_this._getOffsets(_this.state.data)) !== JSON.stringify(_this._getOffsets(data));\n } else {\n return true;\n }\n }, _this._updateStateModifier = {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n if (_this._isDataDirty(data)) {\n _this.setState({ data: data });\n }\n return data;\n }\n }, _this._getPopperStyle = function () {\n var data = _this.state.data;\n\n\n if (!_this._popper || !data) {\n return {\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0\n };\n }\n\n return _extends({\n position: data.offsets.popper.position\n }, data.styles);\n }, _this._getPopperPlacement = function () {\n return _this.state.data ? _this.state.data.placement : undefined;\n }, _this._getPopperHide = function () {\n return !!_this.state.data && _this.state.data.hide ? '' : undefined;\n }, _this._getArrowStyle = function () {\n if (!_this.state.data || !_this.state.data.offsets.arrow) {\n return {};\n } else {\n var _this$state$data$offs = _this.state.data.offsets.arrow,\n top = _this$state$data$offs.top,\n left = _this$state$data$offs.left;\n\n return { top: top, left: left };\n }\n }, _this._handlePopperRef = function (node) {\n _this._popperNode = node;\n if (node) {\n _this._createPopper();\n } else {\n _this._destroyPopper();\n }\n if (_this.props.innerRef) {\n _this.props.innerRef(node);\n }\n }, _this._scheduleUpdate = function () {\n _this._popper && _this._popper.scheduleUpdate();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Popper, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n popper: {\n setArrowNode: this._setArrowNode,\n getArrowStyle: this._getArrowStyle\n }\n };\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(lastProps) {\n if (lastProps.placement !== this.props.placement || lastProps.eventsEnabled !== this.props.eventsEnabled || lastProps.target !== this.props.target) {\n this._destroyPopper();\n this._createPopper();\n }\n if (lastProps.children !== this.props.children) {\n this._scheduleUpdate();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._destroyPopper();\n }\n }, {\n key: '_createPopper',\n value: function _createPopper() {\n var _this2 = this;\n\n var _props = this.props,\n placement = _props.placement,\n eventsEnabled = _props.eventsEnabled,\n positionFixed = _props.positionFixed;\n\n var modifiers = _extends({}, this.props.modifiers, {\n applyStyle: { enabled: false },\n updateState: this._updateStateModifier\n });\n if (this._arrowNode) {\n modifiers.arrow = _extends({}, this.props.modifiers.arrow || {}, {\n element: this._arrowNode\n });\n }\n this._popper = new PopperJS(this._getTargetNode(), this._popperNode, {\n placement: placement,\n positionFixed: positionFixed,\n eventsEnabled: eventsEnabled,\n modifiers: modifiers\n });\n\n // TODO: look into setTimeout scheduleUpdate call, without it, the popper will not position properly on creation\n setTimeout(function () {\n return _this2._scheduleUpdate();\n });\n }\n }, {\n key: '_destroyPopper',\n value: function _destroyPopper() {\n if (this._popper) {\n this._popper.destroy();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n component = _props2.component,\n innerRef = _props2.innerRef,\n placement = _props2.placement,\n eventsEnabled = _props2.eventsEnabled,\n positionFixed = _props2.positionFixed,\n modifiers = _props2.modifiers,\n children = _props2.children,\n restProps = _objectWithoutProperties(_props2, ['component', 'innerRef', 'placement', 'eventsEnabled', 'positionFixed', 'modifiers', 'children']);\n\n var popperStyle = this._getPopperStyle();\n var popperPlacement = this._getPopperPlacement();\n var popperHide = this._getPopperHide();\n\n if (typeof children === 'function') {\n var popperProps = {\n ref: this._handlePopperRef,\n style: popperStyle,\n 'data-placement': popperPlacement,\n 'data-x-out-of-boundaries': popperHide\n };\n return children({\n popperProps: popperProps,\n restProps: restProps,\n scheduleUpdate: this._scheduleUpdate\n });\n }\n\n var componentProps = _extends({}, restProps, {\n style: _extends({}, restProps.style, popperStyle),\n 'data-placement': popperPlacement,\n 'data-x-out-of-boundaries': popperHide\n });\n\n if (typeof component === 'string') {\n componentProps.ref = this._handlePopperRef;\n } else {\n componentProps.innerRef = this._handlePopperRef;\n }\n\n return createElement(component, componentProps, children);\n }\n }]);\n\n return Popper;\n}(Component);\n\nPopper.contextTypes = {\n popperManager: PropTypes.object\n};\nPopper.childContextTypes = {\n popper: PropTypes.object.isRequired\n};\nPopper.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n placement: PropTypes.oneOf(placements),\n eventsEnabled: PropTypes.bool,\n positionFixed: PropTypes.bool,\n modifiers: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n target: PropTypes.oneOfType([\n // the following check is needed for SSR\n PropTypes.instanceOf(typeof Element !== 'undefined' ? Element : Object), PropTypes.shape({\n getBoundingClientRect: PropTypes.func.isRequired,\n clientWidth: PropTypes.number.isRequired,\n clientHeight: PropTypes.number.isRequired\n })])\n};\nPopper.defaultProps = {\n component: 'div',\n placement: 'bottom',\n eventsEnabled: true,\n positionFixed: false,\n modifiers: {}\n};\n\n\nexport default Popper;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport { createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Arrow = function Arrow(props, context) {\n var _props$component = props.component,\n component = _props$component === undefined ? 'span' : _props$component,\n innerRef = props.innerRef,\n children = props.children,\n restProps = _objectWithoutProperties(props, ['component', 'innerRef', 'children']);\n\n var popper = context.popper;\n\n var arrowRef = function arrowRef(node) {\n popper.setArrowNode(node);\n if (typeof innerRef === 'function') {\n innerRef(node);\n }\n };\n var arrowStyle = popper.getArrowStyle();\n\n if (typeof children === 'function') {\n var arrowProps = {\n ref: arrowRef,\n style: arrowStyle\n };\n return children({ arrowProps: arrowProps, restProps: restProps });\n }\n\n var componentProps = _extends({}, restProps, {\n style: _extends({}, arrowStyle, restProps.style)\n });\n\n if (typeof component === 'string') {\n componentProps.ref = arrowRef;\n } else {\n componentProps.innerRef = arrowRef;\n }\n\n return createElement(component, componentProps, children);\n};\n\nArrow.contextTypes = {\n popper: PropTypes.object.isRequired\n};\n\nArrow.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\n\nexport default Arrow;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport { Data } from 'popper.js';\nimport * as React from 'react';\nimport { Arrow, Popper as ReactPopper } from 'react-popper';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport { IPopperContentProps } from './PopperContent.props';\n\nexport interface IPopperContentState {\n placement?: string;\n isOpen: boolean;\n}\n\n/**\n * Renders popper content. This is an internal helper class shared between components.\n */\nexport default class PopperContent extends React.Component {\n public static defaultProps: Partial = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {}\n };\n\n constructor(props: IPopperContentProps) {\n super(props);\n\n this._handlePlacementChange = this._handlePlacementChange.bind(this);\n this.state = { isOpen: props.isOpen };\n }\n\n public componentDidMount(): void {\n this._handleProps();\n }\n\n public componentDidUpdate(prevProps: IPopperContentProps): void {\n if (this.props.isOpen !== prevProps.isOpen) {\n this._handleProps();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPopperContentProps, nextState: IPopperContentState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this.props.isOpen ? this._renderChildren() : null;\n }\n\n private _handlePlacementChange(data: Data): Data {\n if (this.state.placement !== data.placement) {\n this.setState({ placement: data.placement });\n }\n\n return data;\n }\n\n private _handleProps(): void {\n if (this.props.container !== 'inline') {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n }\n\n private _hide(): void {\n this.setState({ isOpen: false });\n }\n\n private _show(): void {\n this.setState({ isOpen: true });\n }\n\n private _renderChildren(): JSX.Element | null {\n const {\n cssModule,\n children,\n isOpen,\n flip,\n offset,\n target,\n fallbackPlacement,\n focusOut,\n placementPrefix,\n arrowClassName: arrowClassNameOrUndefined,\n hideArrow,\n className,\n tag,\n modifiers,\n boundariesElement,\n ...attrs\n } = this.props;\n\n const arrowClassName = mapToCssModules(classNames('msc-arrow', arrowClassNameOrUndefined), cssModule);\n\n const placement = (this.state.placement || attrs.placement || 'auto').split('-')[0];\n const popperClassName = mapToCssModules(\n classNames(className, placementPrefix ? `${placementPrefix}-${placement}` : placement),\n this.props.cssModule\n );\n\n const extendedModifiers = {\n offset: { offset },\n flip: { enabled: flip, behavior: fallbackPlacement },\n preventOverflow: { boundariesElement },\n update: {\n enabled: true,\n order: 950,\n fn: this._handlePlacementChange\n },\n ...modifiers\n };\n\n const targetElement = getTargetElement(target);\n if (targetElement === null) {\n return null;\n }\n\n return (\n \n {children}\n {!hideArrow && }\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProductsProps {\n dialogStrings?: {\n closeWindowButtonText: string;\n };\n\n className: string;\n processStatusClass: string;\n text: string;\n\n modalOpen: boolean | undefined;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const PopupProducts = (popupProps: IPopupProductsProps) => {\n const { processStatusClass, dialogStrings, className, text, modalOpen, setModalOpen } = popupProps;\n\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n if (!dialogStrings || !text) {\n return null;\n }\n\n return (\n \n \n \n
\n
{text}
\n \n {dialogStrings.closeWindowButtonText}\n \n \n \n );\n};\n\nexport default PopupProducts;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '..';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../modal';\n\nexport interface IPopupProps extends IComponentProps<{ product: SimpleProduct | undefined; price: ProductPrice | undefined }> {\n dialogStrings?: {\n goToCartText: string;\n continueShoppingText: string;\n headerItemOneText: string;\n headerItemFormatText: string;\n headerMessageText: string;\n freePriceText: string;\n originalPriceText: string;\n currentPriceText: string;\n };\n\n className: string;\n imageSettings?: IImageSettings;\n gridSettings: IGridSettings | undefined;\n productQuantity: number;\n priceComponent: React.ReactNode;\n navigationUrl?: string;\n modalOpen: boolean | undefined;\n telemetryContent?: ITelemetryContent;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const Popup = (popupProps: IPopupProps) => {\n const {\n dialogStrings,\n className,\n imageSettings,\n gridSettings,\n data: { product, price },\n productQuantity,\n priceComponent,\n navigationUrl,\n modalOpen,\n telemetryContent,\n setModalOpen,\n context\n } = popupProps;\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n if (!dialogStrings || !product) {\n return null;\n }\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.ContinueShopping);\n const continueShoppingAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ViewBagAndCheckout;\n const viewBagAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n const fallbackImageUrl = getFallbackImageUrl(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const quantity = productQuantity !== undefined ? productQuantity : 1;\n const itemsString =\n quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const shouldDisplayUnitOfMeasure =\n context.app.config?.unitOfMeasureDisplayType && context.app.config.unitOfMeasureDisplayType !== 'none';\n\n const reducedDimensions: string = product.Dimensions\n ? product.Dimensions.reduce((str, productDimension) => {\n if (productDimension.DimensionValue && productDimension.DimensionValue.Value) {\n if (str) {\n return `${str}, ${productDimension.DimensionValue.Value}`;\n }\n\n return `${productDimension.DimensionValue.Value}`;\n }\n\n return str;\n }, '')\n : '';\n\n return (\n \n \n {itemsString}\n {dialogStrings.headerMessageText}\n \n \n \n {product.Name}\n {reducedDimensions !== '' ?
{reducedDimensions}
: ''}\n {price ?
{priceComponent}
: ''}\n {product.DefaultUnitOfMeasure && shouldDisplayUnitOfMeasure ? (\n
\n {product.DefaultUnitOfMeasure}\n
\n ) : (\n ''\n )}\n
\n \n \n {dialogStrings.goToCartText}\n \n \n {dialogStrings.continueShoppingText}\n \n \n
\n );\n};\n\nexport default Popup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport Button from '../button/Button';\nimport { Popover } from '../popover';\n\n/**\n * Resources for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionResources {\n specifyAmountButtonText: string;\n payFullAmountButtonText: string;\n}\n\n/**\n * Props for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionProps {\n className: string;\n\n resources: IPriceEditorModeSelectionResources;\n\n currentState: PriceEditorModeSelectionState;\n onStateChanged(state: PriceEditorModeSelectionState): void;\n}\n\n/**\n * Defines editor modes for the amount.\n */\nexport enum PriceEditorModeSelectionState {\n full = 0,\n partial = 1\n}\n\n/**\n * Retrieves resource value based by the given mode state.\n * @param modeState - Given state.\n * @param resources - All resources.\n * @returns Resource value for the given state.\n */\nconst getPriceEditorModeSelectionStateResources = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources\n): string => {\n switch (modeState) {\n case PriceEditorModeSelectionState.full:\n return resources.payFullAmountButtonText;\n case PriceEditorModeSelectionState.partial:\n return resources.specifyAmountButtonText;\n default:\n throw new Error('Failed to retrieve resource description for unknown price editor selection state.');\n }\n};\n\n/**\n * On click functionality.\n * @param handleStateChange - Handle change state function.\n * @param modeState - New state.\n * @returns Event handler.\n */\nconst onClickHandler = (\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void,\n modeState: PriceEditorModeSelectionState\n) => () => {\n handleStateChange(modeState);\n};\n\n/**\n * Renders a button that allows to update the mode to the given state.\n * @param modeState - The state to render.\n * @param resources - Resource values.\n * @param className - Element class name.\n * @param handleStateChange - Event handler to update the state.\n * @returns React node.\n */\nconst renderModeStateItem = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources,\n className: string,\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void\n): React.ReactNode => {\n const stateStringRepresentation = PriceEditorModeSelectionState[modeState];\n\n return (\n \n );\n};\n\n/**\n * On Toggle Popover functionality.\n * @param setPopoverState -Set popover state function.\n * @param isPopoverState -Boolean value.\n * @returns Set toggle popover state functionality.\n */\nconst togglePopoverHandler = (setPopoverState: React.Dispatch>, isPopoverState: boolean) => () => {\n setPopoverState(!isPopoverState);\n};\n\n/**\n * Price editor component which handles selection modes (for instance, full or partial amount).\n * @param props - Configuration of the component.\n * @returns React element.\n */\nexport const PriceEditorModeSelectionComponent: React.FC = (props: IPriceEditorModeSelectionProps) => {\n const popoverReference = React.createRef();\n const [isPopoverShown, setIsPopoverShown] = React.useState(false);\n\n const [modeState, setModeState] = React.useState(props.currentState);\n\n /**\n * Updates component state when a selection is changed.\n * @param clickedState - New mode state.\n */\n const onChangeMode = (clickedState: PriceEditorModeSelectionState) => {\n setModeState(clickedState);\n setIsPopoverShown(false);\n props.onStateChanged(clickedState);\n };\n\n return (\n
\n \n {getPriceEditorModeSelectionStateResources(modeState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(PriceEditorModeSelectionState).map(state => {\n return renderModeStateItem(state, props.resources, props.className, onChangeMode);\n })}\n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n IPriceEditorModeSelectionResources,\n PriceEditorModeSelectionComponent,\n PriceEditorModeSelectionState\n} from './price-editor-mode-selection';\n\n/**\n * Resources for price editor.\n */\nexport interface IPriceEditorResources extends IPriceEditorModeSelectionResources {\n priceEditorInputAriaLabel: string;\n}\n\n/**\n * The props required to render the component.\n */\nexport interface IPriceEditorProps {\n className: string;\n\n defaultAmount: number;\n\n resources: IPriceEditorResources;\n\n minimumValue?: number;\n maximumValue?: number;\n\n handleChange?(newValue: number): void;\n}\n\n/**\n * The state of the component.\n */\nexport interface IPriceEditorState {\n currentValue?: number;\n isInputFocused: boolean;\n}\n\n/**\n * Provides an input field which allows entering a price amount.\n */\nexport class PriceEditor extends React.PureComponent {\n private static readonly _precision = 2;\n\n private readonly _inputRef: React.RefObject;\n\n public constructor(props: IPriceEditorProps) {\n super(props);\n\n this._inputRef = React.createRef();\n\n let defaultValue = props.defaultAmount;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && defaultValue < this.props.minimumValue) {\n defaultValue = this.props.minimumValue;\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && defaultValue > this.props.maximumValue) {\n defaultValue = this.props.maximumValue;\n }\n\n this.state = {\n currentValue: defaultValue,\n isInputFocused: false\n };\n }\n\n public render(): JSX.Element {\n const containerClassName = 'msc-price-editor';\n\n const hasMultipleModes = !ObjectExtensions.isNullOrUndefined(this.props.maximumValue);\n\n let mode = PriceEditorModeSelectionState.partial;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && this.state.currentValue === this.props.maximumValue) {\n mode = PriceEditorModeSelectionState.full;\n }\n\n const formattedValue = this.state.currentValue?.toFixed(PriceEditor._precision) ?? '';\n const editedValue = this.state.currentValue ?? '';\n\n return (\n
\n \n {hasMultipleModes && (\n
\n \n
\n )}\n
\n );\n }\n\n /**\n * Handles input focus.\n */\n private readonly _handleInputFocus = () => {\n this.setState({ isInputFocused: true });\n };\n\n /**\n * Handles input blur.\n */\n private readonly _handleInputBlur = () => {\n this.setState({ isInputFocused: false });\n };\n\n /**\n * Handles editor mode state change.\n * @param newState - New selection mode state.\n */\n private readonly _handleEditorModeStateChange = (newState: PriceEditorModeSelectionState) => {\n if (newState === PriceEditorModeSelectionState.full) {\n this._updateAmount(this.props.maximumValue!);\n } else {\n this.setState({ currentValue: undefined });\n this._inputRef.current?.focus();\n }\n };\n\n /**\n * Update the price and calls corresponding callbacks.\n * @param newAmount - New price amount.\n */\n private readonly _updateAmount = (newAmount: number) => {\n this.setState({ currentValue: newAmount });\n\n if (this.props.handleChange) {\n this.props.handleChange(newAmount);\n }\n };\n\n /**\n * Handles value change.\n * @param event - React change event.\n */\n private readonly _handleChange = (event: React.ChangeEvent) => {\n let currentValue = Number.parseFloat(event.target.value);\n\n if (Number.isNaN(currentValue)) {\n this.setState({ currentValue: undefined });\n return;\n }\n\n currentValue = +currentValue.toFixed(PriceEditor._precision);\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && currentValue < this.props.minimumValue) {\n this._updateAmount(this.props.minimumValue);\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && currentValue > this.props.maximumValue) {\n this._updateAmount(this.props.maximumValue);\n } else {\n this._updateAmount(currentValue);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IProgressProps {\n id?: string;\n className?: string;\n max: number;\n min?: number;\n value: number;\n ariaLabel?: string;\n}\n\nexport const Progress: React.FC = (props: IProgressProps) => {\n const { id, className, max, min, value, ariaLabel } = props;\n const percent = Math.max(0, Math.min((value * 100) / max, 100));\n const style = { width: `${percent}%` };\n\n return (\n
\n \n
\n );\n};\n\n// Set default props\nProgress.defaultProps = {\n 'aria-valuemax': 100,\n 'aria-valuenow': 0\n} as Partial;\n\nexport default Progress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport debounce from 'lodash/debounce';\nimport * as React from 'react';\n\nimport { IQuantityProps } from './Quantity.props';\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to allow input of quantity between a\n * range of values.\n */\n\nexport default class Quantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1 };\n this._handleChange = this._handleChange.bind(this);\n }\n\n public render(): JSX.Element {\n const currentValue = this.state.currentInput;\n\n return (\n \n );\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max }, () => {\n debounce(() => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }, 200)();\n });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.setState({ currentInput: minValue }, () => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n });\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { addThrottledEvent, getCSS } from '../common/utilities';\nimport Flipper from '../flipper/Flipper';\nimport { ISingleSlideCarouselProps } from './SingleSlideCarousel.props';\n\ninterface ISingleSlideCarouselState {\n showPrevious: boolean;\n showNext: boolean;\n offset: number;\n}\n\n/**\n * SingleSlideCarousel - yup.\n */\nexport default class SingleSlideCarousel extends React.PureComponent {\n private static readonly itemsSelector: string = 'msc-ss-carousel-item';\n\n private static readonly verticalItemsSelector: string = 'msc-ss-carousel-vert-item';\n\n private direction: string;\n\n private item: HTMLElement | undefined;\n\n private slide: HTMLElement | undefined;\n\n private carousel: HTMLElement | undefined;\n\n private carouselSize: number = 0;\n\n private slideSize: number = 0;\n\n private itemSize: number = 0;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private readonly ref: React.RefObject;\n\n private readonly slideRef: React.RefObject;\n\n private readonly itemRef: React.RefObject;\n\n private readonly id: string;\n\n private scrollStart: number | undefined;\n\n private readonly scrollThreshold: number;\n\n private readonly flipperNextLabel: string = 'next';\n\n private readonly flipperPrevLabel: string = 'prev';\n\n constructor(props: ISingleSlideCarouselProps) {\n super(props);\n this._nextSlide = this._nextSlide.bind(this);\n this._previousSlide = this._previousSlide.bind(this);\n this._handleTouchStart = this._handleTouchStart.bind(this);\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onResized = this._onResized.bind(this);\n this.state = { showPrevious: false, showNext: false, offset: 0 };\n this.ref = React.createRef();\n this.slideRef = React.createRef();\n this.itemRef = React.createRef();\n this.direction = 'left';\n this.id = props.parentId || '';\n this.scrollThreshold = this.props.touchScrollThreshold !== undefined ? this.props.touchScrollThreshold : 100;\n }\n\n public componentDidUpdate(): void {\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this._updateFlippers(this.state.offset);\n }\n\n public componentDidMount(): void {\n this.direction = this.props.vertical ? 'top' : 'left';\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._onResized as EventListener);\n this._updateFlippers(0);\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n\n public render(): JSX.Element {\n const isVert: boolean = this.props.vertical === true;\n const slidePositionStyle = {} as React.CSSProperties;\n const modifiedChildren = this._getClonedChildren(isVert);\n slidePositionStyle[this.direction] = `${this.state.offset}px`;\n const carouselClass = isVert ? 'msc-ss-carousel-vert' : 'msc-ss-carousel';\n const carouselSlideClass = isVert ? 'msc-ss-carousel-vert-slide' : 'msc-ss-carousel-slide';\n const overflowClass = isVert ? 'msc-ss-carousel-vert-strip' : 'msc-ss-carousel-strip';\n const previousFlipperGlyph = isVert ? 'msi-chevron-up' : 'msi-chevron-left';\n const nextFlipperGlyph = isVert ? 'msi-chevron-down' : 'msi-chevron-right';\n const previousFlipperClassName = isVert ? 'msc-ss-carousel-vert__flipper' : 'msc-ss-carousel__flipper';\n const nextFlipperClassName = isVert\n ? 'msc-ss-carousel-vert__flipper msc-ss-carousel-vert__flipper--next'\n : 'msc-ss-carousel__flipper msc-ss-carousel__flipper--next';\n const disableClassName = !this.state.showPrevious || !this.state.showNext ? 'disabled' : null;\n return (\n
\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperPrevLabel}\n />\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperNextLabel}\n />\n
\n \n {modifiedChildren}\n \n
\n
\n );\n }\n\n private _getClonedChildren(isVert: boolean): React.DetailedReactHTMLElement, HTMLElement>[] {\n return React.Children.map(this.props.children, (child: React.ReactNode, index: number) => {\n const castChild = (child as React.ReactChild) as React.ReactElement;\n if (index === 1) {\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n ref: this.itemRef,\n onFocus: this._onFocus\n });\n }\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n onFocus: this._onFocus\n });\n });\n }\n\n private _nextSlide(): void {\n this._moveSingleSlide(true);\n }\n\n private _previousSlide(): void {\n this._moveSingleSlide(false);\n }\n\n private _handleTouchStart(evt: React.TouchEvent): void {\n if (evt.touches.length === 0) {\n this.scrollStart = undefined;\n } else {\n this.scrollStart = this.props.vertical === true ? evt.touches[0].screenY : evt.touches[0].screenX;\n }\n }\n\n private _handleTouchEnd(evt: React.TouchEvent): void {\n if (evt.changedTouches.length > 0 && this.scrollStart !== undefined) {\n const newTarget: number = this.props.vertical === true ? evt.changedTouches[0].screenY : evt.changedTouches[0].screenX;\n\n const delta = newTarget - this.scrollStart;\n\n if (delta > this.scrollThreshold) {\n this._previousSlide();\n }\n\n if (delta < -this.scrollThreshold) {\n this._nextSlide();\n }\n }\n\n this.scrollStart = undefined;\n\n return;\n }\n\n private _moveSingleSlide(next: boolean): void {\n let currentOffset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n const carouselSize = this.carouselSize;\n let maxScrollCount = Math.floor(carouselSize / this.itemSize);\n const directionModifier = next ? -1 : 1;\n currentOffset = !isNaN(currentOffset) && typeof currentOffset === 'number' ? currentOffset : 0;\n\n if (maxScrollCount === 0) {\n maxScrollCount = 1;\n }\n\n maxScrollCount = carouselSize % this.itemSize === 0 ? maxScrollCount - 1 : maxScrollCount;\n maxScrollCount = Math.max(maxScrollCount, 1);\n const maxScrollDistance = maxScrollCount * this.itemSize;\n let distanceToEdge = next ? this.slideSize - carouselSize + currentOffset : Math.abs(currentOffset);\n distanceToEdge = Math.max(0, distanceToEdge);\n\n const offset =\n maxScrollDistance <= distanceToEdge\n ? maxScrollDistance * directionModifier + currentOffset\n : distanceToEdge * directionModifier + currentOffset;\n\n this._updateFlippers(offset);\n }\n\n private _setSizes(): void {\n const item = this.item;\n if (item) {\n this.itemSize = this.props.vertical ? item.scrollHeight : item.scrollWidth;\n } else {\n this.itemSize = 0;\n }\n\n this.carouselSize = this._calculateCarouselSize();\n this.slideSize = this.slide ? (this.props.vertical ? this.slide.scrollHeight : this.slide.scrollWidth) : 0;\n }\n\n private _calculateCarouselSize(): number {\n if (!this.carousel) {\n return 0;\n }\n\n const carouselStyle = getComputedStyle(this.carousel);\n\n const padding = this.props.vertical\n ? Number.parseFloat(carouselStyle.paddingTop || '') + Number.parseFloat(carouselStyle.paddingBottom || '')\n : Number.parseFloat(carouselStyle.paddingLeft || '') + Number.parseFloat(carouselStyle.paddingRight || '');\n\n return this.props.vertical ? this.carousel.clientHeight - padding : this.carousel.clientWidth - padding;\n }\n\n private _canScrollPrevious(offset: number): boolean {\n return !isNaN(offset) && offset !== 0;\n }\n\n private _canScrollNext(offset: number): boolean {\n if (this.carouselSize + Math.abs(offset) >= this.slideSize) {\n return false;\n }\n\n return true;\n }\n\n private _updateFlippers(offset: number): void {\n this.setState({\n showPrevious: this._canScrollPrevious(offset),\n showNext: this._canScrollNext(offset),\n offset\n });\n }\n\n private _scrollItemIntoView(item: HTMLElement): void {\n const carouselSize = this.carouselSize;\n let offset = this.props.vertical ? item.offsetTop : item.offsetLeft;\n let updateOffset = false;\n\n const left = Number.parseInt(getCSS(this.slide!, 'left'), 10) || 0;\n const top = Number.parseInt(getCSS(this.slide!, 'top'), 10) || 0;\n\n if (this.props.vertical) {\n if (top < 0 && -top > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (top + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset - 1;\n updateOffset = true;\n }\n } else if (this.direction === 'left') {\n if (left < 0 && -left > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (left + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset + 19;\n updateOffset = true;\n }\n }\n\n if (updateOffset) {\n this._updateFlippers(offset);\n\n if (this.props.vertical) {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollTop = 0;\n }, 0);\n } else {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollLeft = 0;\n }, 0);\n }\n }\n }\n\n private _onFocus(event: React.FocusEvent): void {\n const target = event.currentTarget as HTMLElement;\n this._scrollItemIntoView(target);\n }\n\n private _onCarouselResized(): void {\n this._setSizes();\n let offset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n\n // Ensure the carousel slide fits across the entire alotted space\n if (!isNaN(offset) && offset < 0 && this.slideSize + offset < this.carouselSize) {\n offset = Math.min(0, this.carouselSize - this.slideSize);\n }\n\n this._updateFlippers(offset);\n }\n\n private readonly _onResized = (): void => {\n this._onCarouselResized();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { ISliderThumbProps } from './SliderThumb.props';\n\n/**\n * Sliderthumb - This is a sliderthumb component this component which is\n * used to control the slider thumb.\n */\nexport default class SliderThumb extends React.PureComponent {\n public static defaultProps: Partial = {\n showTooltip: true,\n showToolTipOnTab: false,\n tooltip: {\n placement: 'top'\n }\n };\n\n public sliderButtonRef: React.RefObject = React.createRef();\n\n public render(): JSX.Element {\n const sliderThumbBaseClass = 'slider__thumb ';\n const sliderThumbClass = this.props.trackThumbClass\n ? `${sliderThumbBaseClass} ${this.props.trackThumbClass}`\n : sliderThumbBaseClass;\n\n return (\n <>\n \n {this.props.showTooltip && (\n \n {this.props.handleTooltipText\n ? this.props.handleTooltipText(this.props.sliderValue!)\n : this.props.sliderValue!.toString()}\n \n )}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, isMobile, Progress, VariantType } from '..';\nimport { clamp, toUpperCaseFirstChar } from '../common/utilities';\nimport { ISliderChangeNotification, ISliderLabel, ISliderProps, ISliderThumbProps } from './Slider.props';\nimport SliderThumb from './SliderThumb';\n\n// This maintains the min and max values for the 2 thumbs\nexport interface ISliderState {\n sliderThumbs: ISliderThumbProps[];\n limit: number;\n grab: number;\n active: boolean;\n id: string;\n showToolTipOnTab?: boolean;\n}\n\nconst orientations = {\n horizontal: {\n dimension: 'width',\n direction: 'left',\n coordinate: 'x'\n },\n vertical: {\n dimension: 'height',\n direction: 'top',\n coordinate: 'y'\n }\n};\n\ninterface IFillCoordinates {\n fill: number;\n handle: number;\n label: number;\n}\n\nenum EventType {\n Start,\n End,\n Change\n}\n\nconst rangeDefaultChkValue = 0;\n\n/**\n * Slider - This is a slider component this component morphs into a range slider\n * based on flags.\n */\n\nexport default class Slider extends React.Component {\n public static defaultProps: Partial = {\n showTooltip: true,\n inForm: false,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n sliderThumbs: [{ id: 'slider_thumb_id', value: 50 }]\n };\n\n private static readonly sliderBaseClass: string = 'slider';\n\n public isRangeSlider: boolean;\n\n private readonly ref: React.RefObject = React.createRef();\n\n private readonly thumb1Ref: React.RefObject = React.createRef();\n\n private readonly thumb2Ref: React.RefObject = React.createRef();\n\n public static getDerivedStateFromProps(props: ISliderProps, state: ISliderState): ISliderState | null {\n if (\n (props.sliderThumbs.length > 0 && props.sliderThumbs[0].value !== state.sliderThumbs[0].value) ||\n (props.sliderThumbs.length > 1 && props.sliderThumbs[1].value !== state.sliderThumbs[1].value)\n ) {\n const nextState = { ...state };\n nextState.sliderThumbs[0].value = props.sliderThumbs[0].value;\n if (props.sliderThumbs.length > 1) {\n nextState.sliderThumbs[1].value = props.sliderThumbs[1].value;\n }\n return nextState;\n }\n return null;\n }\n\n constructor(props: ISliderProps) {\n super(props);\n this.isRangeSlider = this.props.sliderThumbs.length === 2;\n this.state = {\n sliderThumbs: this.props.sliderThumbs,\n grab: 0,\n limit: 0,\n active: false,\n id: '',\n showToolTipOnTab: false\n };\n this._handleUpdate = this._handleUpdate.bind(this);\n this._handleDrag = this._handleDrag.bind(this);\n this._handleEnd = this._handleEnd.bind(this);\n this._handleStart = this._handleStart.bind(this);\n this.toggle = this.toggle.bind(this);\n this._handleOnChange = this._handleOnChange.bind(this);\n this._setSliderValue = this._setSliderValue.bind(this);\n this._getThumbFromProps = this._getThumbFromProps.bind(this);\n this._publishNotification = this._publishNotification.bind(this);\n this._getThumbAndPublishEvent = this._getThumbAndPublishEvent.bind(this);\n this._willThumbsCrossOver = this._willThumbsCrossOver.bind(this);\n this._handleOnClick = this._handleOnClick.bind(this);\n if (\n MsDyn365.isBrowser &&\n document.body.parentElement &&\n document.body.parentElement.getAttribute('dir') === 'rtl' &&\n (this.props.shouldSliderAdjustToRTL === undefined || this.props.shouldSliderAdjustToRTL)\n ) {\n orientations.horizontal.direction = 'right';\n }\n }\n\n public componentDidMount(): void {\n this._handleUpdate();\n MsDyn365.isBrowser && window.addEventListener('resize', this._handleUpdate);\n }\n\n public componentDidUpdate(): void {\n if (this.ref.current && this.ref.current.offsetWidth > rangeDefaultChkValue && this.state.limit === rangeDefaultChkValue) {\n this._handleUpdate();\n }\n }\n\n public toggle = (): void => {\n this.setState((_prevState: ISliderState) => {\n return { showToolTipOnTab: !_prevState.showToolTipOnTab };\n });\n };\n\n public shouldComponentUpdate(nextProps: ISliderProps, _nextState: ISliderState): boolean {\n let shouldRender = true;\n if (this.isRangeSlider) {\n const thumb1Position = this._getPositionFromValue(nextProps.sliderThumbs[0].value);\n const thumb2Position = this._getPositionFromValue(nextProps.sliderThumbs[1].value);\n\n /**\n * During first render the second thumb isn't positioned since handleUpdate positions it after it's mounted\n * in the componentDidMount method. This check is to make sure that the first render happens correctly and then\n * for all subsequent renders and updates, the thumb2 position cannot be 0 thanks to this condition.\n */\n shouldRender = thumb2Position > 0 ? thumb2Position >= thumb1Position + nextProps.step : true;\n }\n return shouldRender;\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._handleUpdate);\n }\n\n public render(): JSX.Element {\n const { orientation } = this.props;\n const sliderClass = this.props.className\n ? `${Slider.sliderBaseClass} slider-${orientation} ${this.props.className}`\n : `${Slider.sliderBaseClass} slider-${orientation}`;\n\n const sliderId = this.props.id;\n const dimension = orientations[orientation].dimension;\n const direction = orientations[orientation].direction;\n const camelCasedDirection = toUpperCaseFirstChar(direction);\n const positionThumb1 = this._getPositionFromValue(this.props.sliderThumbs[0].value);\n const coordsThumb1 = this._coordinates(positionThumb1);\n let fillStyle = { [dimension]: `${coordsThumb1.fill}px` };\n const handleStyle: React.CSSProperties[] = [];\n handleStyle.push({ [direction]: `${coordsThumb1.handle}px` });\n const trackProgressClass = classnames('progress-bar', this.props.trackProgressClass ? this.props.trackProgressClass : '');\n const sliderKey = this.props.sliderKey ? `_${String(this.props.sliderKey)}` : '';\n\n if (this.isRangeSlider) {\n const positionThumb2 = this._getPositionFromValue(this.props.sliderThumbs[1].value);\n const coordsThumb2 = this._coordinates(positionThumb2);\n handleStyle.push({ [direction]: `${coordsThumb2.handle}px` });\n if (orientation === 'vertical') {\n fillStyle = {\n marginBottom: `${coordsThumb1.fill}px`,\n [dimension]: `${coordsThumb2.fill - coordsThumb1.fill}px`\n };\n } else {\n fillStyle = {\n [`margin${camelCasedDirection}`]: `${\n orientations.horizontal.direction === 'right' ? coordsThumb1.fill - this.state.grab : coordsThumb1.fill\n }px`,\n [dimension]: `${coordsThumb2.handle - coordsThumb1.handle}px`\n };\n }\n }\n\n return (\n
\n
\n {this.props.showProgressBar && (\n \n )}\n
\n {this._renderSliderThumbs(handleStyle)}\n
\n {this.props.showLabels ? this._renderLabels(this.props.labels!) : null}\n
\n );\n }\n\n private readonly _renderLabels = (labels: ISliderLabel[]): JSX.Element => {\n return (\n
\n {labels.map((label: ISliderLabel) => {\n return (\n
\n {label.labelString}\n
\n );\n })}\n
\n );\n };\n\n private readonly _renderSliderThumbs = (thumbStyles: React.CSSProperties[]): React.ReactFragment | JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n const sliderAriaLabelMin = format('{0} {1}', this.props.sliderThumbs[0].ariaLabel, this.state.sliderThumbs[0].value);\n\n const sliderAriaLabelMax = this.isRangeSlider\n ? format('{0} {1}', this.props.sliderThumbs[1].ariaLabel, this.state.sliderThumbs[1].value)\n : '';\n return (\n <>\n {\n this.setState({\n showToolTipOnTab: false\n });\n this.props.onBlur && this.props.onBlur();\n }}\n onKeyDown={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n onFocus={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n tabIndex={0}\n style={thumbStyles[0]}\n aria-valuenow={isMobileView ? undefined : this.state.sliderThumbs[0].value}\n />\n {' '}\n {this.isRangeSlider && (\n <>\n \n \n \n )}\n \n );\n };\n\n private readonly _handleUpdate = (): void => {\n const { orientation } = this.props;\n const dimensionStr = toUpperCaseFirstChar(orientations[orientation].dimension);\n\n // To get the offsetWidth and offsetHeight of the slider element\n const sliderPos = this.ref.current![`offset${dimensionStr}`];\n const handlePos = this.thumb1Ref.current!.sliderButtonRef.current![`offset${dimensionStr}`];\n\n if (handlePos !== 0) {\n this.setState({\n limit: sliderPos - handlePos,\n grab: orientations.horizontal.direction === 'right' ? -handlePos / 2 : handlePos / 2\n });\n }\n };\n\n private readonly _handleStart = (e: React.TouchEvent | React.KeyboardEvent | React.MouseEvent): void => {\n e.stopPropagation();\n const eventType = e.type;\n document.addEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.addEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n const castTarget = e.target as HTMLElement;\n const thumbid = castTarget && castTarget.id;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: true, id: thumbid };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Start, eventType);\n }\n );\n };\n\n private _handleEnd(e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const eventType = e.type;\n const castTarget = e.target as HTMLElement;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: false, id: '' };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.End, eventType);\n }\n );\n document.removeEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.removeEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n }\n\n private _handleDrag(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const value = this._position(e);\n const eventType = e.type;\n const castThumb = e.target as HTMLElement;\n const thumbId = this.state.id || (castThumb && castThumb.id);\n const thumbPressed = this._getThumbFromProps(thumbId);\n\n if (thumbPressed && !this._willThumbsCrossOver(thumbPressed[0], e)) {\n thumbPressed[0].value = value;\n this._setSliderValue(thumbPressed, castThumb, eventType);\n }\n }\n\n private _handleOnClick(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const position = this._position(e);\n const castThumb = e.target as HTMLElement;\n const eventType = e.type;\n const thumb1 = this._getThumbFromProps(this.props.sliderThumbs[0].id);\n\n if (this.isRangeSlider) {\n const thumb2 = this._getThumbFromProps(this.props.sliderThumbs[1].id);\n\n if (thumb1 && thumb2) {\n const currentMinValue = thumb1[0].value;\n const currentMaxValue = thumb2[0].value;\n const lengthToMinValue = position - currentMinValue;\n const lengthToMaxValue = currentMaxValue - position;\n\n if (lengthToMinValue < lengthToMaxValue) {\n thumb1[0].value = position;\n } else {\n thumb2[0].value = position;\n }\n\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: [thumb1[0], thumb2[0]] };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n } else if (thumb1) {\n thumb1[0].value = position;\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: thumb1 };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n }\n\n private readonly _position = (e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): number => {\n const { grab } = this.state;\n const { orientation } = this.props;\n const castEvent = (e as unknown) as TouchEvent;\n const node = this.ref;\n const coordinateStyle = toUpperCaseFirstChar(orientations[orientation].coordinate);\n const directionStyle = orientations[orientation].direction;\n\n // String conversion to the right property value\n const clientCoordinateStyle = `client${coordinateStyle}`;\n const coordinate = !castEvent.touches ? e[clientCoordinateStyle] : castEvent.touches[0][clientCoordinateStyle];\n const direction = node.current!.getBoundingClientRect()[directionStyle];\n const pos = orientations.horizontal.direction === 'right' ? direction - coordinate - grab : coordinate - direction - grab;\n return this._getValueFromPosition(pos);\n };\n\n private readonly _getPositionFromValue = (value: number): number => {\n const { limit } = this.state;\n const { min, max } = this.props;\n const diffMaxMin = max - min;\n const diffValMin = value - min;\n const percentage = diffValMin / diffMaxMin;\n return Math.round(percentage * limit);\n };\n\n /**\n * Translate position of slider to slider value.\n * @param {number} pos - Current position/coordinates of slider.\n * @returns {number} Value - Slider value.\n */\n private readonly _getValueFromPosition = (pos: number): number => {\n const { limit } = this.state;\n const { orientation, min, max, step } = this.props;\n\n const percentage = clamp(pos, 0, limit) / (limit || 1);\n const baseVal = step * Math.round((percentage * (max - min)) / step);\n const value = orientation === 'horizontal' ? baseVal + min : max - baseVal;\n\n return clamp(value, min, max);\n };\n\n /**\n * Grab coordinates of slider.\n * @param {Object} pos - Position object.\n * @returns {Object} - Slider fill/handle coordinates.\n */\n private readonly _coordinates = (pos: number): IFillCoordinates => {\n const { limit, grab } = this.state;\n const { orientation } = this.props;\n const value = this._getValueFromPosition(pos);\n const position = this._getPositionFromValue(value);\n const handlePos = orientation === 'horizontal' ? position + grab : position;\n const fillPos = orientation === 'horizontal' ? handlePos : limit - handlePos;\n\n return {\n fill: fillPos,\n handle: handlePos,\n label: handlePos\n };\n };\n\n private _handleOnChange(e: React.ChangeEvent): void {\n e.stopPropagation();\n const castTarget = e.target as HTMLInputElement;\n const thumbInteractedWith = castTarget && this._getThumbFromProps(castTarget.id.replace('range', ''));\n const eventType = e.type;\n thumbInteractedWith![0].value = Number.parseInt(e.target.value, 10);\n this._setSliderValue(thumbInteractedWith!, castTarget, eventType);\n }\n\n private readonly _setSliderValue = (sliderThumb: ISliderThumbProps[], castTarget: HTMLElement, eventType: string): void => {\n if (this.isRangeSlider) {\n if (this.props.sliderThumbs[0].value > this.props.sliderThumbs[1].value) {\n this.props.sliderThumbs[0].value = this.props.sliderThumbs[1].value;\n }\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: { ...this.props.sliderThumbs }\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n } else {\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: sliderThumb\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n }\n };\n\n private _getThumbFromProps(thumbId: string): ISliderThumbProps[] | null {\n let thumbFound;\n\n thumbFound = this.props.sliderThumbs.filter((thumb: ISliderThumbProps) => {\n return thumb.id === thumbId;\n });\n\n return thumbFound.length > 0 ? thumbFound : null;\n }\n\n private readonly _publishNotification = (\n thumb: ISliderThumbProps | null,\n delegate: (sliderNotification: Readonly) => void,\n eventType: string\n ): void => {\n delegate({\n id: (thumb && thumb.id) || '',\n slider: this,\n firstThumbValue: this.state.sliderThumbs[0].value,\n secondThumbValue: (this.state.sliderThumbs[1] && this.state.sliderThumbs[1].value) || Number.NaN,\n eventType\n });\n };\n\n private readonly _getThumbAndPublishEvent = (element: HTMLElement, eventType: EventType, nativeEventType: string): void => {\n let elmenentId = '';\n if (element && element.id && eventType === EventType.Change) {\n elmenentId = element.id.replace('range', '');\n }\n const thumb = element && this._getThumbFromProps(elmenentId);\n\n if (eventType === EventType.End) {\n if (this.props.onChangeEnd) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeEnd, nativeEventType);\n }\n }\n if (eventType === EventType.Start) {\n if (this.props.onChangeStart) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeStart, nativeEventType);\n }\n }\n if (eventType === EventType.Change) {\n if (this.props.onChange) {\n this._publishNotification(thumb && thumb[0], this.props.onChange, nativeEventType);\n }\n }\n };\n\n private _willThumbsCrossOver(\n thumbPressed: ISliderThumbProps,\n event: React.KeyboardEvent | React.MouseEvent | React.TouchEvent\n ): boolean {\n if (!this.isRangeSlider) {\n return false;\n }\n let keycode = 0;\n let checkCondition = false;\n\n if (event.type === 'keydown') {\n const castEvent = (event as unknown) as KeyboardEvent;\n keycode = castEvent.keyCode;\n if (\n (thumbPressed === this.props.sliderThumbs[1] && (keycode === 38 || keycode === 39)) ||\n (thumbPressed === this.props.sliderThumbs[0] && (keycode === 37 || keycode === 40))\n ) {\n return false;\n }\n checkCondition = true;\n }\n if (event.type === 'touchmove' || event.type === 'mousemove' || event.type === 'click') {\n const value = this._position(event);\n if (\n (this.state.sliderThumbs[1].value < value && thumbPressed.id === this.props.sliderThumbs[1].id) ||\n (this.state.sliderThumbs[0].value > value && thumbPressed.id === this.props.sliderThumbs[0].id)\n ) {\n return false;\n }\n checkCondition = true;\n }\n\n return !(checkCondition && this.props.sliderThumbs[1].value - this.props.step * 2 >= this.props.sliderThumbs[0].value);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { Button, format, KeyCodes, Node, UncontrolledPagination } from '..';\nimport CheckBoxButton from './checkbox';\n\n/**\n * Table Resources.\n */\nexport interface ITableResources {}\n\n/**\n * Table props.\n */\nexport interface IDataTableProps {\n resources: ITableResources;\n headings: (IHeadingsProperty | undefined)[];\n rows: ITableRowProps[];\n className?: string;\n editLinkText?: string;\n actionLinkText?: string;\n deleteLinkText?: string;\n viewLinkText?: string;\n editLinkTooltip?: string;\n actionLinkTooltip?: string;\n deleteLinkTooltip?: string;\n viewLinkTooltip?: string;\n enableToModify: boolean;\n showCheckBoxes?: boolean;\n isSortable?: boolean;\n showPagination?: boolean;\n paginationProperty: IPaginationProperty;\n minifyActions?: boolean;\n minifiedButtonText?: string;\n excludedColumns?: string[]; // Filled with ITableItemProps.id of columns not to show\n isSingleSelectOnly: boolean;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n resourcePrefix?: string;\n actions: {\n onDelete?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onEdit?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onView?(userData: ITableItemProps[]): void | undefined;\n };\n checkBoxCallback?(records: ITableRowProps[]): void;\n formatPrice?(price: number): string;\n tableAriaLabel?: string;\n tableTabIndex?: number;\n}\n\n/**\n * Table IPaginationProperty props.\n */\nexport interface IPaginationProperty {\n itemPerPage: number;\n skipCount: number;\n prevText: string;\n nextText: string;\n paginationText: string;\n url: string;\n}\n\n/**\n * Table ITableItemProps props.\n */\nexport interface ITableItemProps {\n id: string;\n type: TableDataType;\n value: boolean | number | string;\n className?: string;\n}\n\n/**\n * Table IButtonReferences props.\n */\nexport interface IButtonReferences {\n edit?: React.RefObject;\n delete?: React.RefObject;\n}\n\n/**\n * Table ITableRowProps props.\n */\nexport interface ITableRowProps {\n row: ITableItemProps[];\n isSelected: boolean;\n buttonReferences?: IButtonReferences;\n}\n\n/**\n * Table IDataTableCells props.\n */\ninterface IDataTableCells {\n header: boolean;\n className: string;\n content: string | number | React.ReactNode;\n cellIndex: number;\n scope: 'col' | 'row';\n colSpan?: number;\n records?: ITableRowProps;\n}\n\n/**\n * Table IHeadingsProperty props.\n */\nexport interface IHeadingsProperty {\n name: string;\n sortable: boolean;\n ariaLabel?: string;\n}\n\n/**\n * Table ITableState props.\n */\nexport interface ITableState {\n sortingKey: string;\n ascendingOrder: boolean;\n showActions: boolean;\n selectedIndex: string;\n}\n\n/**\n * Table TableDataType props.\n */\nexport enum TableDataType {\n Number = 'Number',\n Text = 'Text',\n Price = 'Price'\n}\n\nexport default class Table extends React.PureComponent {\n public componentClassName: string = 'ms-table';\n\n private readonly headingPrefix: string = 'table';\n\n private readonly capitalizeHeadingPrefix: string = 'Table';\n\n constructor(props: IDataTableProps) {\n super(props);\n this.state = {\n ascendingOrder: true,\n sortingKey: (props.headings[0] && props.headings[0].name) || '',\n showActions: props.minifyActions !== undefined ? !props.minifyActions : true,\n selectedIndex: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, headings, rows, isSortable, showPagination, paginationProperty, tableAriaLabel, tableTabIndex } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const classname = classnames(this.componentClassName, className);\n let tableRows = isSortable && sortingKey ? this._sortTableRow(rows, sortingKey, ascendingOrder) : rows;\n let paginationLinks = null;\n\n if (showPagination) {\n const { skipCount, itemPerPage, nextText, prevText, paginationText, url } = paginationProperty;\n\n paginationLinks = (\n \n );\n\n tableRows = this._getCurrentPageData(tableRows, skipCount, skipCount + itemPerPage);\n }\n\n const tableBody = this._renderRow(tableRows);\n const tableHead = this._renderHeadingRow(headings);\n\n return (\n
\n \n {tableHead}\n {tableBody}\n
\n {paginationLinks}\n
\n );\n }\n\n /**\n * Set sorting key.\n * @param event -The mouse event.\n */\n private readonly _selectSortingKey = (event: React.MouseEvent | React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const columnName = target.getAttribute('data-sort-name') ? (target.getAttribute('data-sort-name') as string) : '';\n const { sortingKey, ascendingOrder } = this.state;\n let newOrder = true;\n\n if (sortingKey === columnName) {\n newOrder = !ascendingOrder;\n }\n\n this.setState({\n sortingKey: columnName,\n ascendingOrder: newOrder,\n showActions: false\n });\n };\n\n /**\n * Checkbox change.\n * @param rows -Table rows.\n * @param checkBoxCallback -Checkboxcallback function.\n * @param index -Index value for row.\n * @returns Checkbox rows.\n */\n private readonly _onCheckBoxChangeHandler = (\n rows: ITableRowProps[],\n checkBoxCallback: (records: ITableRowProps[]) => void,\n index?: number\n ) => () => {\n if (ObjectExtensions.isNumber(index)) {\n rows[index].isSelected = !rows[index].isSelected;\n }\n checkBoxCallback(rows);\n };\n\n private readonly _renderHeadingRow = (columnData: (IHeadingsProperty | undefined)[]) => {\n const {\n resources,\n showCheckBoxes,\n enableToModify,\n minifyActions,\n rows,\n actionLinkText,\n isSortable,\n checkBoxCallback,\n resourcePrefix,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText,\n sortByAscending,\n sortByDescending\n } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const sortingClassName = ascendingOrder ? 'asc' : 'dsc';\n\n const sortingValue = ascendingOrder ? sortByAscending : sortByDescending;\n\n const columns = columnData.map((data, cellIndex) => {\n if (!data) {\n return;\n }\n const counterAddition = 1;\n const updatedCellIndex = cellIndex + counterAddition;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- unsafe assignment.\n const heading =\n resources[`${this.headingPrefix}${data.name}HeadingText`] ||\n resources[`${resourcePrefix!}${this.capitalizeHeadingPrefix}${data.name}HeadingText`] ||\n resources[`${data.name}HeadingText`] ||\n data.name;\n\n const columnSortValue = sortingKey === data.name && sortingValue !== undefined ? sortingValue : '';\n\n const columnAriaLabel = data.ariaLabel ? `${format(data.ariaLabel, heading)} ${columnSortValue}` : '';\n\n const content = (isSortable && data.sortable && (\n \n \n {heading}\n
\n \n )) || (\n \n {heading}\n \n );\n\n return content;\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && !isSingleSelectOnly && (\n \n );\n\n const actionContent = (\n \n {minifyActions ? '' : actionLinkText}\n
\n );\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data__checkbox checkbox`,\n content: radioCheckBox,\n cellIndex: -1,\n scope: 'col'\n })}\n {columns}\n {enableToModify &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data action-links`,\n content: actionContent,\n cellIndex: 1,\n scope: 'col'\n })}\n \n );\n };\n\n private readonly _renderRow = (rows: ITableRowProps[]) => {\n const {\n enableToModify,\n showCheckBoxes,\n excludedColumns,\n actions,\n checkBoxCallback,\n formatPrice,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText\n } = this.props;\n\n const tableRows = rows.map((rowsData, index) => {\n let className = index % 2 ? `${this.componentClassName}__row even-row` : `${this.componentClassName}__row odd-row`;\n let showActions = false;\n\n const additionalNameAriaLabel = rowsData.row[0].value.toString();\n const columnData = rowsData.row.map(cell => {\n if (excludedColumns && excludedColumns.includes(cell.id)) {\n return;\n }\n\n // Numbers/price data types will always be right-aligned per design standards\n const extraClass = cell.type === TableDataType.Number || cell.type === TableDataType.Price ? 'num-type' : '';\n const cellContent = cell.type === TableDataType.Price && formatPrice ? formatPrice(cell.value as number) : cell.value;\n const columnSpecificClass = cell.className || '';\n return this.tableCell({\n header: false,\n className: classnames(`${this.componentClassName}__row-data`, extraClass, columnSpecificClass),\n content: cellContent,\n cellIndex: index,\n scope: 'row'\n });\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && (\n \n );\n const rowKey = `row-${index}`;\n\n if (rowKey === this.state.selectedIndex && this.state.showActions) {\n className += ' selected';\n showActions = true;\n }\n\n const actionButtons = actions && this._renderActions(rowsData.row, showActions, rowKey, rowsData.buttonReferences);\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: radioCheckBox,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n {columnData}\n {enableToModify &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: actionButtons,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n \n );\n });\n\n return tableRows;\n };\n\n private readonly _renderActions = (\n data: ITableItemProps[],\n showActions: boolean,\n key: string,\n buttonReference?: IButtonReferences\n ): React.ReactNode => {\n const {\n editLinkText,\n deleteLinkText,\n viewLinkText,\n editLinkTooltip,\n deleteLinkTooltip,\n viewLinkTooltip,\n actionLinkTooltip,\n minifyActions,\n minifiedButtonText,\n actionLinkText,\n actions: { onEdit, onDelete, onView }\n } = this.props;\n const handleClickEdit =\n onEdit !== undefined\n ? () => {\n onEdit(data, buttonReference?.edit?.current);\n }\n : undefined;\n const handleClickDelete =\n onDelete !== undefined\n ? () => {\n onDelete(data, buttonReference?.delete?.current);\n }\n : undefined;\n const handleClickView =\n onView !== undefined\n ? () => {\n onView(data);\n }\n : undefined;\n\n const actionButtons = (\n \n {handleClickView && (\n \n )}\n {handleClickEdit && (\n \n {editLinkText}\n \n )}\n {handleClickDelete && (\n \n {deleteLinkText}\n \n )}\n \n );\n\n if (minifyActions) {\n return (\n \n \n {minifiedButtonText ? minifiedButtonText : ''}\n \n {showActions && actionButtons}\n \n );\n }\n return actionButtons;\n };\n\n private readonly _toggleActions = (event: React.MouseEvent) => {\n const target = event && (event.target as HTMLElement);\n const newKey = target && target.getAttribute('data-type') ? (target.getAttribute('data-type') as string) : '';\n this.setState({\n showActions: !this.state.showActions,\n selectedIndex: newKey\n });\n };\n\n private readonly _sortTableRow = (table: ITableRowProps[], sortingkey: string, ascendingOrder: boolean): ITableRowProps[] => {\n return table.sort((userOne: ITableRowProps, userTwo: ITableRowProps) => {\n const userOneData = userOne.row.find(cell => {\n return cell.id === sortingkey;\n });\n const userTwoData = userTwo.row.find(cell => {\n return cell.id === sortingkey;\n });\n\n if (!userOneData || !userTwoData) {\n return -1;\n }\n\n if (typeof userOneData.value === 'number' && typeof userTwoData.value === 'number') {\n return ascendingOrder ? userOneData.value - userTwoData.value : userTwoData.value - userOneData.value;\n }\n\n const cleanFirst =\n (userOneData.value as string) &&\n userOneData.value\n .toString()\n .toLowerCase()\n .trim();\n const cleanSecond =\n (userOneData.value as string) &&\n userTwoData.value\n .toString()\n .toLowerCase()\n .trim();\n\n if (!cleanFirst || !cleanSecond) {\n return -1;\n }\n if (ascendingOrder) {\n return cleanFirst < cleanSecond ? -1 : 1;\n }\n return cleanFirst > cleanSecond ? -1 : 1;\n });\n };\n\n private readonly _getCurrentPageData = (tableRows: ITableRowProps[], start: number, end: number): ITableRowProps[] => {\n if (start >= end) {\n return tableRows;\n }\n\n const result = [];\n for (let i = start; i < end; i++) {\n tableRows[i] && result.push(tableRows[i]);\n }\n\n return result;\n };\n\n private readonly tableCell = (props: IDataTableCells) => {\n const { className, header, cellIndex, scope, colSpan, content } = props;\n const hiddenTabIndex = -1;\n const initialTabIndex = 0;\n return header ? (\n initialTabIndex ? initialTabIndex : hiddenTabIndex}\n >\n {content}\n \n ) : (\n \n {content}\n \n );\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n \n {paginationPreviousText}\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n \n
\n );\n };\n\n /**\n * Calls method display result.\n * @param event - Keyboard event.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this._selectSortingKey(event);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IRadioButtonProps {\n isChecked?: boolean;\n value?: string;\n ariaSetSize?: number;\n ariaPosInSet?: number;\n ariaLabel?: string;\n name: string;\n className?: string;\n isSingleSelectOnly?: boolean;\n onChange(reacords: object): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaLabel\n * @param root0.name\n * @param root0.className\n * @param root0.onChange\n * @param root0.isSingleSelectOnly\n * @extends {React.FC}\n */\nconst CheckBoxButton: React.FC = ({ isChecked, value, ariaLabel, name, className, onChange, isSingleSelectOnly }) => {\n const cssClass = classnames('ms-input-radio', className ? className : '');\n return (\n \n );\n};\n\nexport default CheckBoxButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { ITooltipProps } from './Tooltip.props';\n\nconst DEFAULT_DELAYS = {\n show: 0,\n hide: 250\n};\n\n/**\n * Tooltip component.\n */\nexport default class Tooltip extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n shouldShowMiniCart: false,\n shouldShowCloseButton: false,\n hideArrow: false,\n hideAriaHidden: false,\n placement: 'top',\n placementPrefix: 'msc-bs-tooltip',\n delay: DEFAULT_DELAYS,\n toggle: () => {\n return;\n }\n };\n\n public ref: React.RefObject;\n\n public hideTimeout?: number;\n\n public showTimeout?: number;\n\n public target: HTMLElement | null;\n\n public isMobile: boolean;\n\n public tabPressed: boolean;\n\n constructor(props: ITooltipProps) {\n super(props);\n\n this.ref = React.createRef();\n this.addTargetEvents = this.addTargetEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.removeTargetEvents = this.removeTargetEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.onMouseOverTooltip = this.onMouseOverTooltip.bind(this);\n this.onMouseLeaveTooltip = this.onMouseLeaveTooltip.bind(this);\n this.onMouseOverTooltipContent = this.onMouseOverTooltipContent.bind(this);\n this.onMouseLeaveTooltipContent = this.onMouseLeaveTooltipContent.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.onFocusOutTarget = this.onFocusOutTarget.bind(this);\n this.onEscKeyDown = this.onEscKeyDown.bind(this);\n this.onEscKeyDownNative = this.onEscKeyDownNative.bind(this);\n this.target = null;\n this.isMobile = false;\n this.tabPressed = false;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this.addTargetEvents();\n\n // Remove the attr from parent obj when tooltip is hidden\n\n const body = document.getElementsByTagName('body').item(0);\n if (body) {\n const bodyClasses = body.getAttribute('class');\n if (bodyClasses && bodyClasses.includes('mobile')) {\n this.isMobile = true;\n }\n }\n\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n\n public componentWillUnmount(): void {\n this.clearHideTimeout();\n this.clearShowTimeout();\n this.removeTargetEvents();\n }\n\n public onMouseOverTooltip(e: MouseEvent): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n this.showTimeout = window.setTimeout(this.show.bind(this, e), this.getDelay('show'));\n }\n\n public onMouseLeaveTooltip(e: MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n\n public onMouseOverTooltipContent(): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n }\n\n public onMouseLeaveTooltipContent(e: React.MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e.nativeEvent), this.getDelay('hide'));\n }\n\n public onFocusOutTarget(e: Event): void {\n if (!this.props.isOpen) {\n return;\n }\n\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n\n if (!this.ref || !this.ref.current || !this.ref.current.contains(nextFocus)) {\n this.hide(e);\n }\n }, 1);\n } else {\n this.hide(e);\n }\n }\n\n public onEscKeyDown(e: React.KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e.nativeEvent);\n }\n }\n\n public onEscKeyDownNative(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n\n public getDelay(key: 'show' | 'hide'): number {\n const { delay } = this.props;\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay || 0;\n }\n\n public show(e: Event): void {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.toggle(e);\n\n // Create a new attr for parent obj when tooltip shown\n if (this.target !== null) {\n const ariaAttr = document.createAttribute('aria-describedby');\n ariaAttr.value = this.props.id as string;\n this.target.attributes.setNamedItem(ariaAttr);\n }\n }\n }\n\n public hide(e: Event): void {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.toggle(e);\n\n // Remove the attr from parent obj when tooltip is hidden\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n }\n\n public clearShowTimeout(): void {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n\n public clearHideTimeout(): void {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n\n public handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n if (e.target === this.target || this.target.contains(target)) {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n } else if (this.props.isOpen && target.getAttribute('role') !== 'tooltip') {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }\n\n public addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n if (this.props.trigger) {\n const triggers = this.props.trigger.split(' ');\n if (!triggers.includes('manual')) {\n if (triggers.includes('click')) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n if (triggers.includes('hover')) {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n }\n if (triggers.includes('focus')) {\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n }\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n }\n } else {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n }\n\n public removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n this.target.removeEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.removeEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.removeEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.removeEventListener('focusin', this.show, true);\n this.target.removeEventListener('focusout', this.onFocusOutTarget, true);\n this.target.removeEventListener('focusout', this.hide, true);\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this.handleDocumentClick, true);\n });\n }\n\n public toggle(e?: Event): void {\n if (e && this.props.disabled) {\n e.preventDefault();\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen || this.isMobile) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n hideAriaHidden,\n className,\n innerClassName,\n innerRef,\n modifiers,\n toggle,\n delay,\n placement,\n disabled,\n trigger,\n boundariesElement,\n offset,\n arrowClassName,\n displayMode,\n id,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout-inner' : 'msc-tooltip-inner', this.props.innerClassName),\n this.props.cssModule\n );\n\n const popperClasses = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout' : 'msc-tooltip', 'show', this.props.className),\n this.props.cssModule\n );\n\n return (\n
\n \n {this.props.toggle && this.props.shouldShowCloseButton ? (\n
\n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Tooltip from './Tooltip';\nimport { IUncontrolledTooltipProps } from './Tooltip.props';\n\nexport interface IUncontrolledTooltipState {\n isOpen: boolean;\n}\n\n/**\n * UncontrolledTooltip examples.\n */\nexport default class UncontrolledTooltip extends React.PureComponent {\n private _isAutoDisplayTriggered: boolean;\n\n constructor(props: IUncontrolledTooltipProps) {\n super(props);\n this.state = { isOpen: false };\n this._toggle = this._toggle.bind(this);\n this._isAutoDisplayTriggered = false;\n }\n\n public render(): JSX.Element {\n const isCartPage =\n !StringExtensions.isNullOrWhitespace(this.props.cartPageUrl) && window.location.toString().includes(this.props.cartPageUrl!);\n\n if (this.props.shouldShowMiniCart && !isCartPage) {\n if (!this._isAutoDisplayTriggered) {\n // First time trigger auto mini cart.\n this.setState({ isOpen: true });\n this._isAutoDisplayTriggered = true;\n } else if (!this.state.isOpen) {\n // If tooptip is closed, reset the flag.\n this._isAutoDisplayTriggered = false;\n }\n }\n\n return (\n {\n this.props._toggle ? this.props._toggle() : this._toggle();\n }}\n {...this.props}\n />\n );\n }\n\n private _toggle(): void {\n this.setState(previousState => ({ isOpen: !previousState.isOpen }));\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IWaitingProps } from './Waiting.props';\n\n/**\n * Waiting - this component is a visual indication of a pre-loader.\n */\nexport default class Waiting extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'msc-waiting-circular'\n };\n\n public render(): JSX.Element {\n const { className, ...props } = this.props;\n const watingClassName = `msc-waiting ${className}`;\n\n return
;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { INodeProps } from './node';\n\nexport interface IModuleProps extends INodeProps {\n moduleProps: Msdyn365.IModule;\n}\n\nexport const Module: React.FC = React.forwardRef(\n ({ className = '', id = '', tag: Tag = 'div', moduleProps, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Module;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport type NodeTag = React.ReactType;\n\nexport interface INodeProps {\n /* Wrapper class */\n className: string;\n\n /* Children node */\n children?: React.ReactNode;\n\n /* Wrapper Tag */\n tag?: NodeTag;\n\n /* Other attrributes */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n}\n\nexport type IComponentNodeProps = INodeProps &\n T & {\n /* Wrapper Tag */\n tag?: React.ReactType;\n };\n\nexport const Node: React.FC = React.forwardRef(\n ({ className = '', tag: Tag = 'div', element: Element, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Node;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { Modal, ModalBody, ModalHeader, Node } from '..';\n\nexport interface IModalViewProps {\n classNames?: string;\n galleryCarousel: React.ReactElement;\n modalIsOpen: boolean;\n ontoggle(): void;\n}\n\nexport const ImagefullView: React.FC = (props: IModalViewProps): React.ReactElement => {\n const body = (\n \n {props.galleryCarousel}\n \n );\n\n const modalWindow = (\n \n );\n\n const modalHeader = ;\n\n return React.cloneElement(modalWindow, {}, modalHeader, body);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport function removeInlineZoomStyle(): void {\n const zoomedImages: HTMLCollectionOf = document.body.getElementsByClassName('ms-inline-zoom__zoomedImg');\n\n const zoomedImagesArray = Array.from(zoomedImages) as HTMLImageElement[];\n for (const item of zoomedImagesArray) {\n item.style.width = '0';\n item.style.height = '0';\n }\n}\n\n/**\n * Represents default data scale value which should be used in case improper value specified in module config.\n */\nexport const defaultDataScale = 2;\n\n/**\n * Clears zooming state and reverts to initial image.\n * @param event - Event of moving the mouse out of the image.\n */\nexport function onMouseOutLensContainer(event: React.MouseEvent): void {\n const zoomLens = event.currentTarget;\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n\n/**\n * Represents size dimensions.\n */\ninterface ISize {\n width: number;\n height: number;\n}\n\n/**\n * Represents two-dimensional position.\n */\ninterface ILocation {\n /**\n * Left offset.\n */\n x: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n\n /**\n * Top offset.\n */\n y: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n}\n\n/**\n * Retrieves the displayed image size preserving image proportions.\n * @param imageElement - The html image element which is displayed.\n * @returns The dimensions of the displayed image ignoring all the offsets and paddings.\n */\nfunction getDisplayedImageSize(imageElement: HTMLImageElement): ISize {\n const imageInitialHeight = imageElement.naturalHeight;\n const imageInitialWidth = imageElement.naturalWidth;\n const imageContainerHeight = imageElement.height;\n const imageContainerWidth = imageElement.width;\n\n const widthScaleRatio = imageContainerWidth / imageInitialWidth;\n const heightScaleRatio = imageContainerHeight / imageInitialHeight;\n\n const scaleRatio = Math.min(widthScaleRatio, heightScaleRatio);\n\n return {\n width: imageInitialWidth * scaleRatio,\n height: imageInitialHeight * scaleRatio\n };\n}\n\n/**\n * Retrieves the center point based on the given dimensions.\n * @param size - Dimensions of an element.\n * @returns The point of the center.\n */\nfunction getCenter(size: ISize): ILocation {\n const centerDivider = 2;\n return {\n x: size.width / centerDivider,\n y: size.height / centerDivider\n };\n}\n\n/**\n * Retrieves the position where the lens must be placed based by the mouse position, lens size, and container size.\n * @param cursorPosition - The location of the mouse.\n * @param lensSize - The size of the lens.\n * @param originalSize - The container in which the lens should be placed.\n * @returns The location where the lens must be placed.\n */\nfunction getLensPosition(cursorPosition: ILocation, lensSize: ISize, originalSize: ISize) {\n const lensCenter = getCenter(lensSize);\n\n const position: ILocation = {\n x: cursorPosition.x - lensCenter.x,\n y: cursorPosition.y - lensCenter.y\n };\n\n // Limit lens to be inside the image element.\n const minPositionX = 0;\n const maxPositionX = originalSize.width - lensSize.width;\n position.x = Math.min(Math.max(position.x, minPositionX), maxPositionX);\n\n const minPositionY = 0;\n const maxPositionY = originalSize.height - lensSize.height;\n position.y = Math.min(Math.max(position.y, minPositionY), maxPositionY);\n\n return position;\n}\n\n/**\n * Retrieves mouse position.\n * @param event - Mouse event.\n * @param element - Element in which the event happened.\n * @returns Mouse position inside the given element.\n */\nfunction getCursorPosition(event: React.MouseEvent, element: HTMLElement): ILocation {\n const containerBoundingRect = element.getBoundingClientRect();\n return {\n x: event.pageX - containerBoundingRect.left - window.pageXOffset,\n y: event.pageY - containerBoundingRect.top - window.pageYOffset\n };\n}\n\n/**\n * Formats number to represent pixels, e.g. 42px.\n * @param numericValue - The numeric value of pixels.\n * @returns String in pixel format.\n */\nfunction formatPixelsValue(numericValue: number): string {\n return `${numericValue}px`;\n}\n\n/**\n * Formats the given url to be a background image style value.\n * @param sourceUrl - The image source.\n * @returns Background image style value.\n */\nfunction formatBackgroundImageUrl(sourceUrl: string): string {\n return `url('${sourceUrl}')`;\n}\n\n/**\n * Get the cursor position on image click.\n * @param zoomedImage - The target image.\n * @param dataScaleText - Zoom factor for image.\n * @param event - Mouse event action.\n */\nfunction handleInlineStyles(\n zoomedImage: EventTarget & HTMLImageElement,\n dataScaleText: string,\n event: React.MouseEvent\n): void {\n zoomedImage.removeAttribute('style');\n const imageElement = zoomedImage.parentElement!.previousElementSibling!.querySelector('img')!;\n\n const dataScale = Number(dataScaleText);\n\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const zoomedImageSize: ISize = {\n width: imageContainerSize.width * dataScale,\n height: imageContainerSize.height * dataScale\n };\n\n zoomedImage.style.width = formatPixelsValue(zoomedImageSize.width);\n zoomedImage.style.height = formatPixelsValue(zoomedImageSize.height);\n zoomedImage.style.opacity = '1';\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const imageCenter = getCenter(imageContainerSize);\n const offset: ILocation = {\n x: cursorPosition.x - imageCenter.x,\n y: cursorPosition.y - imageCenter.y\n };\n\n const scaledCursorPosition: ILocation = {\n x: cursorPosition.x * dataScale,\n y: cursorPosition.y * dataScale\n };\n scaledCursorPosition.x -= offset.x;\n scaledCursorPosition.y -= offset.y;\n\n const zoomedImagePosition = getLensPosition(scaledCursorPosition, imageContainerSize, zoomedImageSize);\n\n zoomedImage.style.left = formatPixelsValue(-zoomedImagePosition.x);\n zoomedImage.style.top = formatPixelsValue(-zoomedImagePosition.y);\n}\n\n/**\n * ZoomIn functionality on image click.\n * @param event -The mouse event.\n * @param dataScale -The zoom factor.\n */\nexport function inlineZoomInitClick(event: React.MouseEvent, dataScale?: string): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomImg = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomImg) {\n return;\n }\n\n handleInlineStyles(zoomImg, dataScale ?? '2', event);\n}\n\n/**\n * Updates lens and zoomed image positions on the page.\n * @param event - Mouse movement event.\n * @param imageElement - Original image element.\n * @param lens - The element which shows the part of the image which is zoomed.\n */\nfunction handleMouseMovementInContainerZoom(\n event: React.MouseEvent,\n imageElement: HTMLImageElement,\n lens: EventTarget & HTMLDivElement\n): void {\n let zoomedContainer = document.body.querySelector('.ms-containerZoom__result');\n if (!zoomedContainer) {\n zoomedContainer = document.createElement('div');\n zoomedContainer.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(zoomedContainer);\n }\n\n const lensSize: ISize = {\n width: lens.offsetWidth,\n height: lens.offsetHeight\n };\n\n const dataScale = Number(lens.getAttribute('data-scale') ?? defaultDataScale);\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const displayedImageSize = getDisplayedImageSize(imageElement);\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const lensPosition = getLensPosition(cursorPosition, lensSize, imageContainerSize);\n lens.style.visibility = 'unset';\n lens.style.left = formatPixelsValue(lensPosition.x);\n lens.style.top = formatPixelsValue(lensPosition.y);\n\n const mainImageSource = imageElement.getAttribute('src')!;\n\n zoomedContainer.style.visibility = 'unset';\n zoomedContainer.style.backgroundImage = formatBackgroundImageUrl(mainImageSource);\n zoomedContainer.style.width = formatPixelsValue(lensSize.width * dataScale);\n zoomedContainer.style.height = formatPixelsValue(lensSize.width * dataScale);\n\n const offsetSize: ISize = {\n width: imageContainerSize.width - displayedImageSize.width,\n height: imageContainerSize.height - displayedImageSize.height\n };\n const offsetCenter = getCenter(offsetSize);\n const lensScaledPositionX = (offsetCenter.x - lensPosition.x) * dataScale;\n const lensScaledPositionY = (offsetCenter.y - lensPosition.y) * dataScale;\n\n zoomedContainer.style.backgroundPositionX = formatPixelsValue(lensScaledPositionX);\n zoomedContainer.style.backgroundPositionY = formatPixelsValue(lensScaledPositionY);\n\n zoomedContainer.style.backgroundSize = `${formatPixelsValue(displayedImageSize.width * dataScale)} ${formatPixelsValue(\n displayedImageSize.height * dataScale\n )}`;\n\n const topPosition = imageElement.getBoundingClientRect().top;\n zoomedContainer.style.top = formatPixelsValue(topPosition);\n}\n\nexport function onMouseOverImageContainer(event: React.MouseEvent): void {\n const lens = event.currentTarget.parentElement!.previousElementSibling! as HTMLDivElement;\n lens.classList.add('ms-containerZoom__zoom-lens__opacity');\n\n const imageElement = event.currentTarget as HTMLImageElement;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onMouseMoveLensContainer(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const imageElement = event.currentTarget.nextElementSibling!.querySelector('img')!;\n const lens = event.currentTarget;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onContainerZoomInit(event: React.MouseEvent): void {\n if (!document.body.querySelector('.ms-containerZoom__result')) {\n const containerDiv = document.createElement('div');\n containerDiv.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(containerDiv);\n }\n\n onMouseOverImageContainer(event);\n}\n\nexport function inlineZoomImageOnMouseMove(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const parentElement = event.currentTarget.parentElement!.parentElement!;\n const zoomImg = event.currentTarget;\n\n const dataScale = parentElement.getAttribute('data-scale') ?? `${defaultDataScale}`;\n handleInlineStyles(zoomImg, dataScale, event);\n}\n\nexport function inlineZoomImageOnMouseOut(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n event.currentTarget.style.height = '0';\n event.currentTarget.style.width = '0';\n}\n\nexport function inlineZoomInit(event: React.MouseEvent, dataScale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImage = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomedImage) {\n return;\n }\n\n handleInlineStyles(zoomedImage, dataScale, event);\n}\n\nexport function inlineZoomImageOnHover(event: React.MouseEvent, scale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImg = event.currentTarget.parentElement!.nextElementSibling!.querySelector('img')!;\n handleInlineStyles(zoomedImg, scale, event);\n}\n\n/**\n * Remove container zoomed image.\n */\nexport function removeContainerZoomStyle(): void {\n const zoomLens = document.body.querySelector('.ms-containerZoom__zoom-lens');\n if (zoomLens) {\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n }\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n parseFloat: parseFloat\n});\n"],"names":["Alert","React","render","id","className","closeClassName","cssModule","tag","toggle","color","isOpen","children","transition","fade","assertive","includeAlertClass","ariaLabel","this","props","classes","mapToCssModules","classNames","closeClasses","alertTransition","_objectSpread","Fade","defaultProps","baseClass","timeout","appear","enter","exit","Tag","buttonId","innerContent","type","closeAriaLabel","onClick","UncontrolledTooltip","target","placement","style","undefined","display","role","Object","assign","in","unmountOnExit","BackToTop","constructor","super","_renderHeading","text","Msdyn365","editProps","state","attributes","tabIndex","_reevaluatePosition","bind","_scrollToTop","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","getTelemetryAttributes","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","_this$props","threshold","delayInMs","scrollStepInPx","_objectWithoutProperties","_excluded","_scrollStep","document","documentElement","scrollTop","body","clearInterval","intervalId","setState","scrollTo","e","preventDefault","setInterval","pageYOffset","height","Math","min","innerHeight","clientHeight","hide","scrollHeight","tabIndexValue","Button","disabled","active","block","outline","size","innerRef","href","ref","Collapse","_transitionStatusToClassHash","entering","entered","exiting","exited","_tagRef","_updateParentElement","node","parentElement","classList","contains","minHeight","_onEntering","_onExit","_onExited","_onExiting","_reevaluateHeight","componentDidUpdate","nextProps","shouldComponentUpdate","nextState","navbar","collapseIn","mountOnEnter","onEnter","onEntering","onEntered","onExit","onExiting","onExited","otherProps","transitionProps","Transition","TransitionTimeouts","status","collapseClass","_getTransitionClass","reEvaluateHeight","current","firstElementChild","isAppearing","KeyCodes","getLocaleBasedCustomizedPrice","customPrice","locale","keyCode","returnState","Back","amountData","amountVariable","slice","StringExtensions","isNullOrEmpty","paymentAmount","parseFloat","setLocaleBasedAmount","isNullOrWhitespace","length","charAt","split","_state$amountVariable","includes","stringAmount","replace","EMPTY","_state$amountVariable2","lastDigit","inputTextValue","amountForUI","newVar","toString","usedVar","recentInputNumber","Intl","NumberFormat","format","Number","customizedAmount","_state$amountVariable3","_state$amountVariable4","_state$amountVariable5","substring","indexOf","inputWithDot","formatSpecifier","_len","arguments","parameters","Array","_key","match","index","value","isNullOrWhiteSpace","trim","getTelemetryObject","pageName","moduleName","telemetry","eventType","etext","recid","contentCategory","contentAction","pgname","mname","etype","contentData","setTelemetryAttribute","onTelemetryClick","linkText","logEvent","TelemetryEvent","Custom","clamp","max","toUpperCaseFirstChar","toUpperCase","substr","getCSS","element","property","getComputedStyle","createThrottledEvent","listener","timer","last","event","now","Date","clearTimeout","setTimeout","addThrottledEvent","name","throttledEventHandler","map","c","join","canUseDOM","createElement","getTarget","selection","querySelectorAll","Error","_unused","console","error","findDOMElements","getTargetElement","targetElement","isRef","isElement","Modal","Carousel","focusableElements","updateMaxQuantityForCartLineItem","currentMaxQuantityForCartLineItem","Drawer","_props$collapseProps$","_props$collapseProps","_toggle","isManuallyToggled","collapseProps","buttonText","drawerGlyphClass","classnames","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","drawerClass","toggleButtonProps","_generateDrawerButtonInnerMarkup","collapseState","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","toggleButtonText","_generateGlyphMarkup","location","glyphClass","onToggle","currentTarget","innerText","baseClassActive","fadeIn","timeoutOrUndefined","addEndListener","baseClassAlways","baseClassActiveAlways","isActive","Flipper","telemetryLabel","glyphProps","displayTooltip","sizeClass","attribute","trigger","FormBuilderErrorComponent","_ref","errorMessage","FormBuilder","_onSubmit","async","formData","keys","formKey","currentValue","values","resourceId","resourceValue","onSubmit","previousState","isSubmitted","_onInputChange","_event$target$getAttr","changedValueIndex","parseInt","getAttribute","ObjectExtensions","isNullOrUndefined","Promise","reject","newState","currentKey","_currentKey$isRequire","requiredValueMissing","setValue","isRequired","resolve","Dictionary","_formKey$isRequired","heading","confirmationComponent","submitButtonText","requiredValueMissingErrorMessage","every","ArrayExtensions","hasElements","autoComplete","filter","_formKey$isRequired2","_formKey$isRequired3","key","htmlFor","getValue","onChange","required","isAnyRequiredValueMissing","getValues","findIndex","isMissing","headingTag","HTag","IncrementalQuantity","IncrementalQuantity_1","_props$currentCount","_this$props$min","inputRef","isMobileView","isMobileCheck","isMobile","variant","VariantType","Browser","context","gridSettings","xs","w","sm","md","lg","xl","_validateMin","isNaN","currentInput","_minValue","currentCount","isUpdating","_onIncrement","_onDecrement","_handleChange","_props$applyDefaultOr","_props$currentCount2","applyDefaultOrderSettings","_this$props$inputQuan","_this$props$inputQuan2","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","extraClassIncrement","title","decrementButtonAriaLabel","pattern","onBlur","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","_debounce","inputElement","HTMLInputElement","setAttribute","__decorate","observer","_context$device","MsDyn365","isBrowser","innerWidth","Viewport","device","Type","LabeledDropdown","_onSelectOption","selectedKey","selectedOption","dropdownOptions","option","selectedIndex","labelText","labelClassname","dropdownId","dropdownClassname","labelClassNames","dropdownClassNames","_getSelectedIndex","selected","controlledByParent","i","onSelectOption","selectedOptions","toggleColor","Portal","defaultNode","remove","appendChild","createPortal","mounted","_getFocusableChildren","_handleBackdropClick","_handleBackdropMouseDown","_handleEscape","_handleTab","_onOpened","_onClosed","wasOpen","mouseDownElement","_open","visibility","position","applicationNode","HTMLElement","querySelector","_close","_prevProps","prevState","shouldUpdateFocusToFirstElement","focusableElementArr","focus","componentWillReceiveProps","wrapClassName","modalClassName","backdropClassName","contentClassName","modalTransition","backdropTransition","backdrop","onOpened","onClosed","external","verticalPosition","horizontalPosition","keyboard","zIndex","returnFocusRef","ariaLabelledbyId","dialogAttributes","modalAttributes","onMouseDown","onKeyUp","onKeyDown","modalTransitions","backdropTransitions","Backdrop","dialogBaseClass","dialogClasses","dialog","_document$body$firstE","openCount","scrollY","scrollbarWidth","clientWidth","top","right","left","removeProperty","_document$body$firstE2","modalOpenClassName","modalOpenClassNameRegex","RegExp","_getFocusedChild","focusableChildren","activeElement","stopPropagation","container","which","totalFocusable","currentFocus","focusedIndex","el","shiftKey","autoFocus","ModalBody","ModalFooter","ModalHeader","closeButton","wrapTag","closeButtonLabel","WrapTag","closeButtonTabIndex","Pagination","listClassName","listTag","ListTag","label","paginationClasses","listpaginationClasses","PaginationItem","paginationItemClasses","PaginationLink","next","previous","paginationLinkclasses","defaultCaret","isArray","UncontrolledPagination","activePage","maxPages","items","ceil","itemsPerPage","floor","startingItem","qsps","splitUrl","url","secondSplit","hash","parsedQsps","qsp","qspPair","baseUrl","previousText","nextText","previousAriaLabel","nextAriaLabel","activeQsp","_generatePageLinks","_generateUrl","page","qspUrl","forEach","_generatePaginationArrow","disable","tooltipId","nextId","prevId","ariaDescribedBy","nextAreaDescribed","prevAreaDescribed","_generatePaginationItem","_generateEllipse","leftDistance","rightDistance","leftEllipse","pagesDisplayed","rightEllipse","pages","displayedPagesOnLeft","startingIndex","endIndex","push","Popover","tabPressed","popover","_addTargetEvents","_handleDocumentClick","_removeTargetEvents","getRef","_focusOutTarget","_focusOutPopover","_keyDown","_show","_hide","_handleProps","placementPrefix","hideArrow","innerClassName","modifiers","offset","boundariesElement","popperClasses","PopperContent","focusOut","nextFocus","_createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","_possibleConstructorReturn","self","call","ReferenceError","Manager","_Component","_temp","_this","args","__proto__","getPrototypeOf","apply","concat","_setTargetNode","_targetNode","_getTargetNode","subClass","superClass","create","setPrototypeOf","_inherits","popperManager","setTargetNode","getTargetNode","_props","restProps","obj","hasOwnProperty","Component","childContextTypes","propTypes","_extends","source","Target","_props$component","component","targetRef","targetProps","componentProps","contextTypes","placements","Popper","_setArrowNode","_arrowNode","_getOffsets","data","offsets","_isDataDirty","JSON","stringify","_updateStateModifier","enabled","order","fn","_getPopperStyle","_popper","popper","styles","pointerEvents","opacity","_getPopperPlacement","_getPopperHide","_getArrowStyle","arrow","_this$state$data$offs","_handlePopperRef","_popperNode","_createPopper","_destroyPopper","_scheduleUpdate","scheduleUpdate","setArrowNode","getArrowStyle","lastProps","eventsEnabled","_this2","positionFixed","applyStyle","updateState","destroy","_props2","popperStyle","popperPlacement","popperHide","popperProps","Element","getBoundingClientRect","Arrow","arrowRef","arrowStyle","arrowProps","_handlePlacementChange","prevProps","_renderChildren","flip","fallbackPlacement","arrowClassName","arrowClassNameOrUndefined","attrs","popperClassName","extendedModifiers","behavior","preventOverflow","update","ReactPopper","popupProps","processStatusClass","dialogStrings","modalOpen","setModalOpen","closeModal","closeWindowButtonText","_context$request$app","_context$app$config","imageSettings","product","price","productQuantity","priceComponent","navigationUrl","ContinueShopping","continueShoppingAttribute","ViewBagAndCheckout","viewBagAttribute","fallbackImageUrl","getFallbackImageUrl","ItemId","actionContext","requestContext","apiSettings","request","app","config","OmniChannelMedia","cropFocalRegion","quantity","itemsString","headerItemOneText","headerItemFormatText","shouldDisplayUnitOfMeasure","unitOfMeasureDisplayType","reducedDimensions","Dimensions","reduce","str","productDimension","DimensionValue","Value","headerMessageText","Image","src","PrimaryImageUrl","fallBackSrc","altText","Name","loadFailureBehavior","DefaultUnitOfMeasure","goToCartText","continueShoppingText","PriceEditorModeSelectionState","getPriceEditorModeSelectionStateResources","modeState","resources","full","payFullAmountButtonText","partial","specifyAmountButtonText","onClickHandler","handleStateChange","togglePopoverHandler","setPopoverState","isPopoverState","PriceEditorModeSelectionComponent","popoverReference","isPopoverShown","setIsPopoverShown","setModeState","currentState","onChangeMode","clickedState","onStateChanged","EnumExtensions","getEnumValues","renderModeStateItem","stateStringRepresentation","PriceEditor","_handleInputFocus","isInputFocused","_handleInputBlur","_handleEditorModeStateChange","_this$_inputRef$curre","_updateAmount","maximumValue","_inputRef","newAmount","handleChange","toFixed","_precision","minimumValue","defaultValue","defaultAmount","_this$state$currentVa","_this$state$currentVa2","_this$state$currentVa3","containerClassName","hasMultipleModes","mode","formattedValue","editedValue","priceEditorInputAriaLabel","onFocus","Progress","percent","width","classname","Quantity","minValue","debounce","SingleSlideCarousel","carouselSize","slideSize","itemSize","flipperNextLabel","flipperPrevLabel","_onResized","_onCarouselResized","_nextSlide","_previousSlide","_handleTouchStart","_handleTouchEnd","_onFocus","showPrevious","showNext","slideRef","itemRef","direction","parentId","scrollThreshold","touchScrollThreshold","carousel","slide","item","_setSizes","_updateFlippers","vertical","resizeThrottledEventHandler","isVert","slidePositionStyle","modifiedChildren","_getClonedChildren","carouselClass","carouselSlideClass","overflowClass","previousFlipperGlyph","nextFlipperGlyph","previousFlipperClassName","nextFlipperClassName","disableClassName","onTouchStart","onTouchEnd","useTabList","child","castChild","verticalItemsSelector","itemsSelector","_moveSingleSlide","evt","touches","scrollStart","screenY","screenX","changedTouches","delta","currentOffset","maxScrollCount","directionModifier","maxScrollDistance","distanceToEdge","abs","scrollWidth","_calculateCarouselSize","carouselStyle","padding","paddingTop","paddingBottom","paddingLeft","paddingRight","_canScrollPrevious","_canScrollNext","_scrollItemIntoView","offsetTop","offsetLeft","updateOffset","scrollLeft","SliderThumb","sliderButtonRef","sliderThumbBaseClass","sliderThumbClass","trackThumbClass","handleStart","onMouseUp","handleEnd","onTouchMove","handleDrag","handleKeydown","handleFocus","handleBlur","showTooltip","tooltip","showToolTipOnTab","handleTooltipText","sliderValue","orientations","horizontal","dimension","coordinate","EventType","Slider","thumb1Ref","thumb2Ref","_prevState","_renderLabels","labels","labelId","labelPositioning","labelString","_renderSliderThumbs","thumbStyles","sliderAriaLabelMin","sliderThumbs","sliderAriaLabelMax","isRangeSlider","step","orientation","_handleOnChange","_handleStart","_handleDrag","_handleEnd","ariaValueText","_handleUpdate","dimensionStr","sliderPos","handlePos","limit","grab","castTarget","thumbid","_getThumbAndPublishEvent","Start","_position","castEvent","coordinateStyle","directionStyle","clientCoordinateStyle","pos","_getValueFromPosition","_getPositionFromValue","percentage","round","baseVal","_coordinates","fill","handle","_setSliderValue","sliderThumb","Change","_publishNotification","thumb","delegate","slider","firstThumbValue","secondThumbValue","NaN","nativeEventType","elmenentId","_getThumbFromProps","End","onChangeEnd","onChangeStart","_willThumbsCrossOver","_handleOnClick","shouldSliderAdjustToRTL","offsetWidth","_nextState","shouldRender","thumb1Position","thumb2Position","sliderClass","sliderBaseClass","sliderId","camelCasedDirection","positionThumb1","coordsThumb1","fillStyle","handleStyle","trackProgressClass","sliderKey","String","positionThumb2","coordsThumb2","marginBottom","showProgressBar","fillTrackValue","showLabels","castThumb","thumbId","thumbPressed","thumb1","thumb2","thumbInteractedWith","thumbFound","keycode","checkCondition","inForm","TableDataType","Table","componentClassName","headingPrefix","capitalizeHeadingPrefix","_selectSortingKey","columnName","sortingKey","ascendingOrder","newOrder","showActions","_onCheckBoxChangeHandler","rows","checkBoxCallback","isNumber","isSelected","_renderHeadingRow","columnData","showCheckBoxes","enableToModify","minifyActions","actionLinkText","isSortable","resourcePrefix","isSingleSelectOnly","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","sortingClassName","sortingValue","columns","cellIndex","updatedCellIndex","columnSortValue","columnAriaLabel","sortable","_handleKeyPressPrev","scope","radioCheckBox","CheckBoxButton","actionContent","tableCell","header","content","_renderRow","excludedColumns","actions","formatPrice","rowsData","additionalNameAriaLabel","row","cell","extraClass","Price","cellContent","columnSpecificClass","rowKey","actionButtons","_renderActions","buttonReferences","records","buttonReference","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","actionLinkTooltip","minifiedButtonText","onEdit","onDelete","onView","handleClickEdit","_buttonReference$edit","edit","handleClickDelete","_buttonReference$dele","delete","handleClickView","Node","_toggleActions","newKey","_sortTableRow","table","sortingkey","sort","userOne","userTwo","userOneData","find","userTwoData","cleanFirst","toLowerCase","cleanSecond","_getCurrentPageData","tableRows","start","end","result","colSpan","_renderPrev","paginationPreviousText","_renderNext","paginationNextText","Enter","Space","headings","showPagination","paginationProperty","tableAriaLabel","tableTabIndex","paginationLinks","skipCount","itemPerPage","prevText","paginationText","tableBody","tableHead","isChecked","cssClass","checked","DEFAULT_DELAYS","show","Tooltip","addTargetEvents","handleDocumentClick","removeTargetEvents","onMouseOverTooltip","onMouseLeaveTooltip","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onFocusOutTarget","onEscKeyDown","onEscKeyDownNative","getElementsByTagName","bodyClasses","getNamedItem","removeNamedItem","clearHideTimeout","clearShowTimeout","hideTimeout","showTimeout","getDelay","nativeEvent","delay","ariaAttr","createAttribute","setNamedItem","triggers","displayMode","hideAriaHidden","shouldShowCloseButton","onMouseOver","onMouseLeave","shouldShowMiniCart","_isAutoDisplayTriggered","isCartPage","cartPageUrl","Waiting","watingClassName","Module","moduleProps","restAttribute","renderModuleAttributes","ImagefullView","galleryCarousel","modalWindow","modalIsOpen","ontoggle","modalHeader","removeInlineZoomStyle","zoomedImages","getElementsByClassName","zoomedImagesArray","from","defaultDataScale","onMouseOutLensContainer","zoomLens","zoomedImageContainer","getCenter","x","y","getLensPosition","cursorPosition","lensSize","originalSize","lensCenter","maxPositionX","maxPositionY","getCursorPosition","containerBoundingRect","pageX","pageXOffset","pageY","formatPixelsValue","numericValue","handleInlineStyles","zoomedImage","dataScaleText","removeAttribute","imageElement","previousElementSibling","dataScale","imageContainerSize","offsetHeight","zoomedImageSize","imageCenter","scaledCursorPosition","zoomedImagePosition","inlineZoomInitClick","_event$currentTarget$","zoomImg","nextElementSibling","handleMouseMovementInContainerZoom","lens","_lens$getAttribute","zoomedContainer","displayedImageSize","imageInitialHeight","naturalHeight","imageInitialWidth","naturalWidth","imageContainerHeight","widthScaleRatio","heightScaleRatio","scaleRatio","getDisplayedImageSize","lensPosition","mainImageSource","backgroundImage","offsetCenter","lensScaledPositionX","lensScaledPositionY","backgroundPositionX","backgroundPositionY","backgroundSize","topPosition","onMouseOverImageContainer","add","onMouseMoveLensContainer","onContainerZoomInit","containerDiv","inlineZoomImageOnMouseMove","_parentElement$getAtt","inlineZoomImageOnMouseOut","inlineZoomImageOnHover","scale","zoomedImg","removeContainerZoomStyle","$","stat","forced"],"sourceRoot":""}