{"version":3,"sources":["webpack:///./src/modules/cookbook-tagline/cookbook-tagline.tsx?1e45","webpack:///./src/modules/copyright/copyright.tsx?0bcb","webpack:///src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?b150","webpack:///src/utils/classnames.ts?8f2b","webpack:///src/modules/default-container-2-slots/default-container-2-slots.tsx?b218","webpack:///src/modules/spacer/spacer.tsx?3b03","webpack:///./src/modules/link-list/link-list.tsx?0ff7","webpack:///./src/modules/mailing-list/mailing-input-group.tsx?d1e4","webpack:///./src/modules/mailing-list/mailing-form.tsx?8e35","webpack:///./src/modules/mailing-list/mailing-list.tsx?749b","webpack:///src/modules/starter/starter.tsx?2704","webpack:///src/components/container-background-image/container-background-image-helper.ts?d691","webpack:///src/components/container-background-image/container-backgroud-image.tsx?89dd","webpack:///src/components/base-components.tsx?5f88","webpack:///src/modules/spacer/spacer.view.tsx?bd25","webpack:///./src/modules/single-product-container/single-product-container.tsx?fc63","webpack:///./src/themes/emp/emp.tsx?208f","webpack:///src/modules/default-container-3-slots/default-container-3-slots.tsx?06cd","webpack:///./src/modules/cart-affiliations-maintainer/cart-affiliations-maintainer.tsx?7f37","webpack:///./src/modules/event-description/event-description.tsx?e41c","webpack:///src/modules/default-container/default-container.tsx?4334"],"names":["CookbookTagline","React","constructor","_productCookbookTagLine","render","content","this","props","data","productSpecificationData","result","productAttribute","filter","attribute","Name","toUpperCase","length","TextValue","className","RichTextComponent","text","Copyright","cssName","config","_copyrightTextFormatted","copyrightText","dateToUse","Date","getFullYear","toString","PlaceholderForContainerPreviewComponent","sizePattern","getColumnSizes","size","exec","cols","split","slice","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","map","colWidth","showErrors","context","isDebug","isEditor","request","params","getColClassArray","options","xsmall","small","medium","large","Boolean","colWidths","Map","Default2SlotContainer","PureComponent","super","handleTextChange","event","heading","headingText","target","value","_getColClassName","classNames","reduce","memo","left","right","push","slots","telemetry","log","LogLevel","Debug","values","id","typeName","slotsClassNames","Warning","headingProps","requestContext","Container","containerType","backgroundImage","backgroundImageRepeat","backgroundImageSize","moduleLayout","msdyn365__moduleLayout","HeadingComponent","Object","join","slot","index","key","Spacer","spacerClass","spacerHeight","viewProps","classnames","renderView","LinkList","classname","links","_renderContent","currentPage","url","requestUrl","pathname","cta","isActive","linkUrl","destinationUrl","active","title","linkText","href","ariaLabel","openInNewTab","undefined","rel","MailingInputGroup","_internalValue","initialValue","_onInputChange","bind","_onBlur","label","type","onChange","onBlur","_renderValidation","onLoseFirstFocus","onValueChange","isValid","_validationMessage","validationMessage","__decorate","observable","observer","MailingFormComponent","_firstName","_zipCode","_email","_emailRegex","_zipCodeRegex","_onSubmitForm","_onFirstNameChange","_onZipCodeChange","_onEmailChange","_lostFocus","errorMessage","_isButtonDisabled","onClick","disabled","name","beenBlurred","_testForRequirement","code","_testForRegex","email","console","warn","onSubmit","firstName","zipCode","field","setState","regex","test","MailingList","_onSubmit","_formPage","_backgroundImage","userInfo","confirmationURL","image","imageURL","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","Image","gridSettings","imageSettings","marketingContactSupport","marketingDescription","_mailingListColType","dangerouslySetInnerHTML","getRichTextHtml","getBackgroundRepeatProperty","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","configs","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","moduleName","layout","msdyn365Commerce","isBrowser","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","getAuthoringViewport","imgSettings","sm","md","xl","skipWidthAndHeightSettings","keys","vp","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","src","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","getDataBgSetAttribute","dataBgSetAttributes","BackgroundImage","state","stylesByViewport","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","children","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","_getDefaultAttributes","lazyLoad","role","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","selectedStyle","winInnerWidth","innerWidth","Number","MAX_SAFE_INTEGER","_getDefaultStyle","disableLazyLoad","getContainerType","customClassName","containerContent","tag","textSize","Tag","classNameWithHeading","Text","editProps","onEdit","SpacerView","renderModuleAttributes","SingleProductContainer","productAttributes","hasSlots","Emp","Default3SlotContainer","center","CartAffiliationsMaintainer","isLoggedIn","user","customerAccountNumber","isAuthenticated","_runAffiliationCheck","currentAffils","customer","CustomerAffiliations","cachedAffils","_cachedAffiliations","_cacheAffiliations","_updateCart","curAffil","find","cachedAffil","RecordId","cart","totalItemsInCart","firstLine","CartLines","line","updateCartLineQuantity","cartLineId","LineId","newQuantity","Quantity","isInitialized","initialize","setTimeout","async","cartInput","GlobalStateInput","BaseCartState","actionContext","update","refreshCart","affilIds","affil","localStorage","setItem","AFFILIATION_LOCATION","JSON","stringify","affiliationStr","getItem","parse","EventDescription","eventDescription","intro","body","_renderEventDescription","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","get"],"mappings":"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","file":"static/js/11.812193cf8fc483c8987c.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nimport { ICookbookTaglineData } from './cookbook-tagline.data';\r\nimport { ICookbookTaglineProps } from './cookbook-tagline.props.autogenerated';\r\n\r\n/**\r\n *\r\n * CookbookTagline component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookbookTagline extends React.PureComponent<\r\n ICookbookTaglineProps\r\n> {\r\n private _productCookbookTagLine: string = 'COOKBOOKTAGLINE';\r\n public render(): JSX.Element | null {\r\n const content: ICookbookTaglineData = this.props.data;\r\n if (\r\n !(\r\n content &&\r\n content.productSpecificationData &&\r\n content.productSpecificationData.result\r\n )\r\n ) {\r\n return null;\r\n }\r\n const productAttributes = content.productSpecificationData.result;\r\n const productAttribute = productAttributes.filter(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === this._productCookbookTagLine\r\n );\r\n if (\r\n productAttribute &&\r\n productAttribute.length &&\r\n productAttribute[0].TextValue\r\n ) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport default CookbookTagline;\r\n","// ==============================================================================\r\n// ==============================================================================\r\nimport * as React from 'react';\r\n\r\nimport { ICopyrightData } from './copyright.data';\r\nimport { ICopyrightProps } from './copyright.props.autogenerated';\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITION\r\n// ==============================================================================\r\n/**\r\n * Copyright component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Copyright extends React.PureComponent> {\r\n\r\n // ==============================================================================\r\n // PUBLIC METHODS\r\n // ==============================================================================\r\n\r\n // -----------------------------------------------------------\r\n // -----------------------------------------------------------\r\n public render(): JSX.Element {\r\n const { cssName } = this.props.config;\r\n\r\n return (\r\n
\r\n {this._copyrightTextFormatted}\r\n
\r\n );\r\n }\r\n\r\n // -----------------------------------------------------------\r\n // -----------------------------------------------------------\r\n private get _copyrightTextFormatted(): JSX.Element {\r\n const {\r\n copyrightText,\r\n } = this.props.config;\r\n\r\n const dateToUse = new Date().getFullYear().toString();\r\n\r\n return (\r\n \r\n © {dateToUse} {copyrightText}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Copyright;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PlaceholderForContainerPreviewComponent } from '@msdyn365-commerce/core';\n\nexport default PlaceholderForContainerPreviewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport * as twoSlots from '../modules/default-container-2-slots/default-container-2-slots.props.autogenerated';\nimport * as threeSlots from '../modules/default-container-3-slots/default-container-3-slots.props.autogenerated';\n\nconst sizePattern = /col(_(\\d|auto){1,2}){2,}/;\n\nexport interface IShowErrorOptions {\n isDebug?: boolean;\n isEditor?: boolean;\n}\n\nexport interface IViewPortOptions {\n xsmall?: threeSlots.xsmall | twoSlots.xsmall;\n small?: threeSlots.small | twoSlots.small;\n medium?: threeSlots.medium | twoSlots.medium;\n large?: threeSlots.large | twoSlots.large;\n}\n\nconst translatePrefix = (prefix: `large` | `medium` | `small` | `xsmall` | undefined) => {\n switch (prefix && prefix.toLowerCase()) {\n case 'large':\n return 'lg';\n case 'medium':\n return 'md';\n case 'small':\n return 'sm';\n case 'xsmall':\n default:\n return '';\n }\n};\n\n/**\n * converts config option and size to bootstrap col class name\n * If size is auto or config option is invalid col-auto will be returned\n * If size is xsmall or size is invalid col-{config} will be returned\n * @param config configuration option e.g. col_12_12\n * @param size bootstrap gridsize\n */\nexport const getColumnSizes = (config: string, size?: `large` | `medium` | `small` | `xsmall`): string[] | boolean => {\n if (!sizePattern.exec(config)) {\n return false;\n }\n const cols = config.split('_').slice(1);\n const translatedSize = translatePrefix(size);\n const sizePrefix = (translatedSize && `-${translatedSize}`) || '';\n return cols.map((colWidth: string) => `col${sizePrefix}-${colWidth}`);\n};\n\nexport const showErrors = (context?: ICoreContext): Boolean => {\n const { isDebug, isEditor }: IShowErrorOptions = (context && context.request && context.request.params) || {};\n return !!isDebug || !!isEditor;\n};\n\n/**\n * Converts viewport configuration into a two dimensional array of class names\n */\nexport const getColClassArray = (options: IViewPortOptions): string[][] =>\n (\n [\n options.xsmall && getColumnSizes(options.xsmall),\n options.small && getColumnSizes(options.small, 'small'),\n options.medium && getColumnSizes(options.medium, 'medium'),\n options.large && getColumnSizes(options.large, 'large')\n ].filter(Boolean)\n );\n\nexport const colWidths = new Map([\n ['one', 'col-md-1'],\n ['two', 'col-md-2'],\n ['three', 'col-md-3'],\n ['four', 'col-md-4'],\n ['six', 'col-md-6'],\n ['twelve', 'col-md-12']\n]);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer2SlotsData } from './default-container-2-slots.data';\nimport { IDefaultContainer2SlotsProps } from './default-container-2-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n right: string[];\n}\n\n/**\n * Default container that displays 2 modules\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default2SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer2SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default 2 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const content = slots && slots.content;\n const slotsClassNames = this._getColClassName();\n if (content && content.length > 2) {\n telemetry.log(LogLevel.Warning, 'Default 2 Slot Container passed more than 2 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (2)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, right]: string[]) => {\n memo.left.push(left);\n memo.right.push(right);\n return memo;\n },\n { left: [], right: [] }\n );\n };\n}\n\nexport default Default2SlotContainer;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { ISpacerProps } from './spacer.props.autogenerated';\n\nexport interface ISpacerViewProps extends ISpacerProps<{}> {\n className?: string;\n}\n\n/**\n *\n * SpacerModule component\n * @extends {React.PureComponent}\n */\nclass Spacer extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n const spacerClass = this.props.config.spacerHeight ? `ms-${this.props.config.spacerHeight}` : 'ms-spacer';\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n className: className && classnames(spacerClass, className) || spacerClass,\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default Spacer;\n","import classname from 'classnames';\r\nimport * as React from 'react';\r\nimport { ILinkData } from '../clickable-container/clickable-container.props.autogenerated';\r\nimport { ILinkListProps } from './link-list.props.autogenerated';\r\n\r\n/**\r\n *\r\n * LinkList component\r\n * @extends {React.Component>}\r\n */\r\nclass LinkList extends React.Component> {\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n return (\r\n
\r\n {config.links && this._renderContent(config.links)}\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderContent(links: ILinkData[]): JSX.Element {\r\n const currentPage = this.props.context.request.url.requestUrl.pathname;\r\n return (\r\n
\r\n {links.map((cta: ILinkData, index: number) => {\r\n const isActive = cta.linkUrl?.destinationUrl.split('?')[0] === currentPage;\r\n return \r\n {cta.linkText}\r\n ;\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default LinkList;\r\n","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n// ==============================================================================\r\n// TYPE DEFINITIONS\r\n// ==============================================================================\r\n\r\ninterface IMailingInputGroupProps {\r\n label: string;\r\n isValid?: boolean;\r\n validationMessage?: string;\r\n initialValue: string;\r\n onValueChange(newValue: string): void;\r\n onLoseFirstFocus(labelBlurred: string): void;\r\n}\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITIONS\r\n// ==============================================================================\r\n\r\n/**\r\n * class definition for a control group for mailing\r\n */\r\n@observer\r\nexport class MailingInputGroup extends React.Component {\r\n\r\n // ==========================================================================\r\n // FIELDS\r\n // ==========================================================================\r\n\r\n @observable private _internalValue: string = '';\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n public constructor(props: IMailingInputGroupProps) {\r\n super(props);\r\n this._internalValue = props.initialValue;\r\n\r\n this._onInputChange = this._onInputChange.bind(this);\r\n this._onBlur = this._onBlur.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n \r\n {this._renderValidation()}\r\n
\r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // COMPONENT EVENTS\r\n // ==========================================================================\r\n\r\n private _onBlur(): void {\r\n this.props.onLoseFirstFocus(this.props.label);\r\n }\r\n\r\n private _onInputChange(event: React.ChangeEvent): void {\r\n this._internalValue = event.target.value;\r\n this.props.onValueChange(event.target.value);\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n private _renderValidation(): JSX.Element | void {\r\n if (!this.props.isValid && this.props.isValid !== undefined) {\r\n return (\r\n

\r\n {this._validationMessage}\r\n

\r\n );\r\n }\r\n }\r\n\r\n private get _validationMessage(): string {\r\n return (this.props.validationMessage) ? this.props.validationMessage : 'Field is required';\r\n }\r\n\r\n}","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { MailingInputGroup } from './mailing-input-group';\r\n\r\n// ==============================================================================\r\n// TYPE DEFINITIONS\r\n// ==============================================================================\r\n\r\nexport type mailingFormUserInfo = {\r\n firstName: string;\r\n zipCode: string;\r\n email: string;\r\n};\r\n\r\ntype validationField = {\r\n value: string;\r\n label: string;\r\n isValid?: boolean;\r\n errorMessage?: string;\r\n beenBlurred?: boolean;\r\n};\r\n\r\ninterface IMailingFormComponentProps {\r\n onSubmit(userInfo: mailingFormUserInfo): unknown;\r\n}\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITIONS\r\n// ==============================================================================\r\n\r\n/**\r\n * component responsible for gathering user information for mailing\r\n */\r\n@observer\r\nexport class MailingFormComponent extends React.Component {\r\n\r\n // ==========================================================================\r\n // FIELDS\r\n // ==========================================================================\r\n\r\n @observable private _firstName: validationField = {\r\n label: 'First Name*',\r\n value: ''\r\n };\r\n\r\n @observable private _zipCode: validationField = {\r\n label: 'Zip Code*',\r\n value: ''\r\n };\r\n @observable private _email: validationField = {\r\n label: 'Email*',\r\n value: ''\r\n };\r\n\r\n private _emailRegex: RegExp = /^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]+(?:-+[a-z0-9]+)*\\.)+(?:xn--[a-z0-9]+|[a-z]{2,16})$/i;\r\n private _zipCodeRegex: RegExp = /^[0-9]{5}(?:-[0-9]{4})?$/;\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n public constructor(props: IMailingFormComponentProps) {\r\n super(props);\r\n\r\n this._onSubmitForm = this._onSubmitForm.bind(this);\r\n\r\n this._onFirstNameChange = this._onFirstNameChange.bind(this);\r\n this._onZipCodeChange = this._onZipCodeChange.bind(this);\r\n this._onEmailChange = this._onEmailChange.bind(this);\r\n this._lostFocus = this._lostFocus.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n SUBMIT\r\n \r\n
\r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // COMPONENT EVENTS\r\n //\r\n // ALL EVENTS ARE ALSO TIED TO THEIR RESPECTIVE VALIDATORS\r\n // ==========================================================================\r\n\r\n private _onFirstNameChange(name: string): void {\r\n this._firstName.value = name;\r\n if (!this._firstName.beenBlurred) { return; }\r\n this._testForRequirement(this._firstName, 'Please enter your first name.');\r\n }\r\n\r\n private _onZipCodeChange(code: string): void {\r\n this._zipCode.value = code;\r\n\r\n if (!this._zipCode.beenBlurred) { return; }\r\n this._testForRequirement(this._zipCode, 'Please enter your zip code.');\r\n if (this._zipCode.isValid) {\r\n this._testForRegex(this._zipCode, this._zipCodeRegex, 'Please enter a valid Zip Code.');\r\n }\r\n }\r\n private _onEmailChange(email: string): void {\r\n this._email.value = email;\r\n\r\n if (!this._email.beenBlurred) { return; }\r\n this._testForRequirement(this._email, 'Please enter your email address.');\r\n if (this._email.isValid) {\r\n this._testForRegex(this._email, this._emailRegex, 'Please enter a valid email address.');\r\n }\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * determines if the button is conditionally disabled currently\r\n */\r\n private _isButtonDisabled(): boolean {\r\n\r\n // button will only be disabled if all input fields are considered invalid\r\n // or undefined (meaning not filled out or touched)\r\n return !(this._firstName.isValid && this._zipCode.isValid && this._email.isValid);\r\n }\r\n\r\n /**\r\n * this method checks which field was blurred and sets the beenBlurred\r\n * boolean to true, meaning that it was noticed by the user and can now show\r\n * error messages\r\n *\r\n * @param label the label of the field that has lost its focus\r\n */\r\n private _lostFocus(label: string): unknown {\r\n\r\n // also run all change events related to the field so that the proper\r\n // errors propogate on blur\r\n switch (label) {\r\n case this._firstName.label:\r\n this._firstName.beenBlurred = true;\r\n return this._onFirstNameChange(this._firstName.value);\r\n case this._zipCode.label:\r\n this._zipCode.beenBlurred = true;\r\n return this._onZipCodeChange(this._zipCode.value);\r\n case this._email.label:\r\n this._email.beenBlurred = true;\r\n return this._onEmailChange(this._email.value);\r\n default:\r\n return console.warn('[mailing-form:MailingFormComponent._lostFocus] failed to link a field');\r\n }\r\n }\r\n\r\n /**\r\n * method responsible for sending all values submitted to the parent\r\n */\r\n private _onSubmitForm(): void {\r\n this.props.onSubmit({\r\n email: this._email.value,\r\n firstName: this._firstName.value,\r\n zipCode: this._zipCode.value\r\n });\r\n }\r\n\r\n // ==============================================================================\r\n // VALIDATION METHODS\r\n // ==============================================================================\r\n\r\n private _testForRequirement(field: validationField, errorMessage: string): void {\r\n if (field.value.length === 0) {\r\n field.isValid = false;\r\n field.errorMessage = errorMessage;\r\n } else {\r\n field.isValid = true;\r\n }\r\n\r\n // hack for not re-rendering field value for first time after blur for some\r\n // reason\r\n this.setState({});\r\n }\r\n\r\n private _testForRegex(field: validationField, regex: RegExp, errorMessage: string): void {\r\n if (regex.test(field.value)) {\r\n field.isValid = true;\r\n } else {\r\n field.isValid = false;\r\n field.errorMessage = errorMessage;\r\n }\r\n }\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { getRichTextHtml, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { MailingFormComponent, mailingFormUserInfo } from './mailing-form';\r\nimport { IMailingListData } from './mailing-list.data';\r\nimport { IMailingListProps } from './mailing-list.props.autogenerated';\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITIONS\r\n// ==============================================================================\r\n/**\r\n *\r\n * ColsolareMailingList component\r\n * @extends {React.Component>}\r\n */\r\nclass MailingList extends React.Component> {\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n public constructor(props: IMailingListProps) {\r\n super(props);\r\n\r\n this._onSubmit = this._onSubmit.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n {this._formPage}\r\n {this._backgroundImage}\r\n
\r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // COMPONENT EVENTS\r\n // ==========================================================================\r\n\r\n private _onSubmit(userInfo: mailingFormUserInfo): void {\r\n console.log(userInfo);\r\n\r\n // TODO: send info to add to contact form via data action then change\r\n // page state\r\n\r\n console.log('%cUser will be navigated away from this page and to a confirmation page', 'color: green; font-size:55px;');\r\n console.log(`%c${this.props.config.confirmationURL} <--- url to use`, 'color: green; font-size:25px;');\r\n\r\n }\r\n\r\n // ==========================================================================\r\n // COMPONENT PAGES\r\n // ==========================================================================\r\n\r\n private get _backgroundImage(): JSX.Element | null {\r\n const image = this.props.config.imageURL;\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n if (image) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private get _formPage(): JSX.Element {\r\n const {\r\n marketingContactSupport,\r\n marketingDescription\r\n } = this.props.config;\r\n return (\r\n
\r\n

Mailings

\r\n {\r\n marketingDescription &&\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n }\r\n

Please Enter Your Information

\r\n \r\n {\r\n marketingContactSupport &&\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n private get _mailingListColType(): string {\r\n return (this.props.config.imageURL) ? 'col-4' : 'col';\r\n }\r\n}\r\n\r\nexport default MailingList;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, {\n constructViewportInformationForImage,\n getImageResizeUrl,\n getLargestGridSettingViewportName,\n getMinMaxWidth,\n IAny,\n IGeneric,\n IViewPort,\n Viewport\n} from '@msdyn365-commerce/core-internal';\nimport { cloneDeep as _cloneDeep } from 'lodash';\nimport {\n BackgroundImageRepeat,\n BackgroundImageSize,\n IBackgroundImageAttributes,\n IBackgroundImageLazyloadAttributes,\n IBackgroundImageProps,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst getBackgroundRepeatProperty = (size: string | undefined, repeat: string | undefined): BackgroundImageRepeat => {\n if (!size || size === 'cover') {\n return 'no-repeat';\n }\n switch (repeat) {\n case 'noRepeat':\n return 'no-repeat';\n case 'repeat':\n return 'repeat';\n default:\n return 'no-repeat';\n }\n};\n\nconst getBackgroundSizeProperty = (size: string | undefined): BackgroundImageSize => {\n switch (size) {\n case 'cover':\n return 'cover';\n case 'contain':\n return 'contain';\n case 'default':\n default:\n return undefined;\n }\n};\n\nconst getDefaultViewports = (): IViewPort => {\n return {\n xs: {\n w: 800,\n h: 600\n },\n sm: {\n w: 1200,\n h: 900\n },\n md: {\n w: 1600,\n h: 900\n },\n lg: {\n w: 1600,\n h: 700\n },\n xl: {\n w: 1600,\n h: 700\n }\n };\n};\n\nconst getAuthoringViewport = (moduleName: string | undefined, layout: string | undefined): IViewPort | undefined => {\n if (!msdyn365Commerce.isBrowser) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const authoringHelper = (window as any)._msdyn365.authoringHelper;\n if (!authoringHelper) {\n return;\n }\n\n // if authoring helper is setup, component is rendering from site builder. Build viewport based on layout selected.\n return constructViewportInformationForImage(moduleName, layout, 'backgroundImage', authoringHelper?.themeSettings) as IViewPort;\n};\n\nexport const buildBackgroundImageStylesByViewport = (props: IBackgroundImageProps): IGeneric => {\n const { containerType, image, request, configs } = props;\n\n const gridSettings = request.gridSettings ?? {};\n const imageSettings = image.imageSettings;\n\n const styles: IGeneric = {};\n\n const largestGridSettingViewportName = getLargestGridSettingViewportName(gridSettings);\n if (largestGridSettingViewportName && imageSettings) {\n // in site builder the layout may change, so use authoring viewports.\n const authoringViewPorts = getAuthoringViewport(containerType, configs?.layout);\n const imgSettings = {\n ...imageSettings,\n viewports: { ..._cloneDeep(authoringViewPorts || imageSettings.viewports || getDefaultViewports()) }\n };\n\n // Skip resizing width and height for background images.\n const skipWidthAndHeightSettings = true;\n Object.keys(imgSettings.viewports).map(vp => {\n const viewport = vp as Viewport;\n const minMaxWidth = getMinMaxWidth(gridSettings, imgSettings, viewport, largestGridSettingViewportName);\n const urlSrc = getImageResizeUrl(\n image.src,\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n minHeight: imgSettings.viewports[viewport]?.h,\n backgroundImage: urlSrc,\n backgroundRepeat: getBackgroundRepeatProperty(configs?.size, configs?.repeat),\n backgroundSize: getBackgroundSizeProperty(configs?.size),\n backgroundPosition: 'center center'\n };\n });\n }\n\n return styles;\n};\n\nexport const setStyleAttribute = (currentStyle: IBackgroundImageStyle): IGeneric => {\n let style: IGeneric = {};\n if (currentStyle) {\n style = { ...currentStyle };\n style['minWidth'] = undefined;\n style['width'] = '100%';\n if (currentStyle.backgroundImage) {\n style['backgroundImage'] = `url('${currentStyle.backgroundImage}')`;\n }\n }\n return style;\n};\n\nexport const getBackgroundImageLazyloadAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined,\n styles: IGeneric\n): IBackgroundImageLazyloadAttributes => {\n const attributes = {\n role: 'img',\n className: `${className} lazyload`,\n 'data-bgset': getDataBgSetAttribute(styles)\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n // On lazyload, lazysizes plugin should pick which background image to use based on data-bgset attribute.\n attributes['style']['backgroundImage'] = undefined;\n }\n return attributes;\n};\n\nexport const getBackgroundImageAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined\n): IBackgroundImageAttributes => {\n const attributes = {\n role: 'img',\n className\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n }\n return attributes;\n};\n\nexport const getBgSetMinMaxWidthAttribute = (style: IBackgroundImageStyle): string => {\n if (style.maxWidth) {\n return `[(max-width: ${style.maxWidth}px)]`;\n }\n return '';\n};\n\nexport const getDataBgSetAttribute = (styles: IGeneric): string => {\n const dataBgSetAttributes: string[] = [];\n Object.keys(styles).map(vp => {\n if (styles[vp].backgroundImage) {\n dataBgSetAttributes.push(`${styles[vp].backgroundImage} ${getBgSetMinMaxWidthAttribute(styles[vp])}`);\n }\n });\n\n return dataBgSetAttributes.join(' | ');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getLargestGridSettingViewportName, IGeneric } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isEqual as _isEqual } from 'lodash';\nimport {\n buildBackgroundImageStylesByViewport,\n getBackgroundImageAttributes,\n getBackgroundImageLazyloadAttributes\n} from './container-background-image-helper';\nimport {\n IBackgroundImageAttributes,\n IBackgroundImageProps,\n IBackgroundImageState,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst BACKGROUND_IMAGE_CLASS_NAME = 'ms-container-background-image';\n\n/**\n * BackgroundImage component\n * @extends {React.PureComponent}\n */\nexport class BackgroundImage extends React.PureComponent {\n private stylesByViewport: IGeneric;\n private currentStyle: IBackgroundImageStyle | undefined;\n private mounted: boolean;\n\n constructor(props: IBackgroundImageProps, state: IBackgroundImageState) {\n super(props);\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n this.mounted = false;\n this._componentResize = this._componentResize.bind(this);\n this._getCurrentStyle = this._getCurrentStyle.bind(this);\n this.state = { updateAttributes: false };\n }\n\n public componentDidMount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this._componentResize);\n this.mounted = true;\n this._componentResize();\n }\n }\n\n public componentWillUnmount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this._componentResize);\n this.mounted = false;\n }\n }\n\n public shouldComponentUpdate(nextProps: IBackgroundImageProps, nextState: { updateAttributes: boolean }): boolean {\n if (\n this.state !== nextState ||\n this.props.request?.gridSettings !== nextProps.request?.gridSettings ||\n this.props.configs.repeat !== nextProps.configs.repeat ||\n this.props.configs.size !== nextProps.configs.size ||\n this.props.configs.layout !== nextProps.configs.layout ||\n this.props.image?.imageSettings !== nextProps.image?.imageSettings ||\n this.props.image?.src !== nextProps.image?.src\n ) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { children } = this.props;\n\n try {\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n\n if (this.currentStyle) {\n const processedAtributes = this._processAttributes(\n BACKGROUND_IMAGE_CLASS_NAME,\n this.currentStyle,\n this.stylesByViewport,\n this._isLazyload()\n );\n const attributes = this._getAttributes(processedAtributes);\n if (this.state.updateAttributes) {\n // Update component with the latest attributes.\n return
{children}
;\n } else if (this._isLazyload()) {\n // On lazyload, only include the class name on the first render.\n return
{children}
;\n } else {\n // On lazyload disabled, render the default attributes from server side.\n return
{children}
;\n }\n } else {\n // in no style is found, return the container content.\n return <>{children};\n }\n } catch {\n // in case of any failure, return the container content.\n return <>{children};\n }\n }\n\n private _processAttributes(\n className: string,\n currentStyle: IBackgroundImageStyle,\n stylesByViewport: IGeneric,\n lazyLoad: boolean\n ) {\n if (lazyLoad) {\n return getBackgroundImageLazyloadAttributes(className, currentStyle, stylesByViewport);\n } else {\n return getBackgroundImageAttributes(className, currentStyle);\n }\n }\n\n private _getAttributes(processedAtributes: IBackgroundImageAttributes) {\n return { ...processedAtributes, style: { ...processedAtributes?.style } };\n }\n\n private _componentResize(): void {\n if (msdyn365Commerce.isBrowser) {\n const selectedStyle = this._getCurrentStyle();\n\n if (this.mounted || (selectedStyle && !_isEqual(this.currentStyle, selectedStyle))) {\n this.setState({ updateAttributes: true });\n }\n }\n }\n\n private _getCurrentStyle(): IBackgroundImageStyle | undefined {\n if (msdyn365Commerce.isBrowser) {\n const winInnerWidth: number = window.innerWidth;\n let selectedStyle: IBackgroundImageStyle | undefined;\n Object.keys(this.stylesByViewport).map(vp => {\n if (\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\n selectedStyle = this.stylesByViewport[vp];\n }\n });\n return selectedStyle;\n } else {\n return this._getDefaultStyle();\n }\n }\n\n private _isLazyload(): boolean {\n // Lazyload by default if nothing is specified\n return !this.props.image?.imageSettings?.disableLazyLoad;\n }\n\n private _getDefaultStyle(): IBackgroundImageStyle | undefined {\n const { request } = this.props;\n const largestGridSettingViewportName = getLargestGridSettingViewportName(request.gridSettings ?? {});\n return this.stylesByViewport[largestGridSettingViewportName];\n }\n\n private _getDefaultAttributes(): IBackgroundImageAttributes {\n const style = this._getDefaultStyle();\n const processedAtributes = style\n ? this._processAttributes(BACKGROUND_IMAGE_CLASS_NAME, style, this.stylesByViewport, this._isLazyload())\n : {};\n return this._getAttributes(processedAtributes);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, IImageData, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { BackgroundImage } from './container-background-image/container-backgroud-image';\n\n/**\n * Heading options\n */\nexport interface IHeadingComponentProps {\n /**\n * Heading text\n */\n headingText?: string;\n /**\n * Heading tag (h1, h2, h3, h4, h5, h6)\n */\n tag?: HeadingTag;\n /**\n * Heading text size (sm, md, lg, xl)\n */\n textSize?: TextSize;\n\n requestContext: IRequestContext;\n\n handleTextChange(event: ContentEditableEvent): string;\n}\n\nexport type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type TextSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Container class options\n */\nexport interface IContainerProps {\n /**\n * CSS class name\n */\n className?: string;\n /**\n * Bootstrap supported container types\n */\n containerType?: string;\n /**\n * type name\n */\n typeName?: string;\n /**\n * id of container\n */\n id?: string;\n /**\n * React children\n */\n children: React.ReactNode;\n /**\n * Request context\n */\n request?: IRequestContext;\n /**\n * background image\n */\n backgroundImage?: IImageData;\n /**\n * background image repeat property\n */\n backgroundImageRepeat?: string;\n /**\n * background image size property\n */\n backgroundImageSize?: string;\n /**\n * module layout property\n */\n moduleLayout?: string;\n}\n\nconst getContainerType = (containerType: string | undefined) => {\n switch (containerType) {\n case 'container':\n return 'container';\n case 'fluid':\n default:\n return 'fluid';\n }\n};\n\n/**\n * HOC to create bootstrap container div. If no container type is specified children are rendered.\n * @param options IContainerClasses\n */\nexport const Container: React.SFC = (props: IContainerProps): JSX.Element => {\n const {\n containerType,\n className,\n typeName,\n id,\n children,\n backgroundImage,\n request,\n backgroundImageRepeat,\n backgroundImageSize,\n moduleLayout\n } = props;\n const customClassName = className ? ` ${className}` : '';\n\n let containerContent = children;\n if (containerType) {\n containerContent =
{containerContent}
;\n }\n\n if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n containerContent = (\n \n {containerContent}\n \n );\n }\n\n return containerType ? (\n
{containerContent}
\n ) : (\n
{containerContent}
\n );\n};\n\nexport const HeadingComponent = (props: IHeadingComponentProps & { className: string }): JSX.Element | null => {\n const { tag, headingText, textSize, className } = props;\n const Tag = tag || 'h2';\n const classNameWithHeading = textSize ? `heading ${textSize} ${className}` : `heading ${className}`;\n return (\n (headingText && (\n \n )) ||\n null\n );\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\nimport { ISpacerViewProps } from './spacer';\n\nconst SpacerView: React.FC = props => (\n
\n);\n\nexport default SpacerView;\n","import * as React from 'react';\r\n\r\nimport classname from 'classnames';\r\nimport { ISingleProductContainerData } from './single-product-container.data';\r\nimport { ISingleProductContainerProps } from './single-product-container.props.autogenerated';\r\n\r\n/**\r\n *\r\n * SingleProductContainer component\r\n * @extends {React.Component>}\r\n */\r\nclass SingleProductContainer extends React.Component> {\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element | null {\r\n if (!this.props.data.productAttributes.result) { return null; }\r\n\r\n const { slots } = this.props;\r\n const hasSlots = slots && slots.content && slots.content.length;\r\n return (\r\n
\r\n {hasSlots && slots.content}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SingleProductContainer;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport * as React from 'react';\r\n\r\n /**\r\n * CoreComponent component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass Emp extends React.PureComponent {\r\n constructor(props: {}) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return