{"version":3,"sources":["webpack:///./src/modules/dobbies-footer-newsletter/dobbies-footer-newsletter.view.tsx?9ceb","webpack:///./src/modules/dobbies-footer-newsletter/components/dobbies-modal.tsx?ca1e","webpack:///./src/modules/dobbies-footer-newsletter/dobbies-footer-newsletter.tsx?d81e","webpack:///external \"React\"?c481","webpack:///external \"ReactDOM\"?4b2d","webpack:///./src/dotdigital-extension/DataServiceEntities.g.ts?63cb","webpack:///./src/dotdigital-extension/DataActionExtension.g.ts?79ad","webpack:///./lib/dobbies-footer-newsletter/module-registration.js?c557"],"names":["props","moduleProps","contentProps","newsletterheading","newsletterDescription","joinNow","subscribeForm","context","request","query","onlyBody","React","Module","Object","Node","DobbiesModal","Modal","isOpen","applicationNode","autoFocus","className","modalTitle","ModalHeader","modalBodySlots","ModalBody","modalBodyElement","modalFooter","ModalFooter","DobbiesFooterNewsletter","constructor","state","super","hasFirstNameValue","hasLastNameValue","hasEmailAddressValue","hasFormContainValues","_getHeading","Msdyn365","tag","classnames","text","_getNewsLetterText","_getJoinNowButton","joinNowLabel","joinNowAriaLabel","Button","title","color","onClick","this","_togglePopup","event","setState","isPopupOpen","_renderPopUp","_renderPopupTitle","_renderPopupBody","_renderPopupFooter","popUpHeading","config","role","_closePopup","subscribeResponse","_getSubscribeResponse","_renderForm","FormWrapper","FormContainer","nameInput","emailInput","checkboxPrivacyPolicy","subscribeButtton","resources","cancelButtonTitle","firstName","lastName","emailAddress","privacyPolicyChecked","firstNameError","lastNameError","emailError","requiredError","emailValidationError","privacyPolicyError","recaptchaError","responseReceived","responseError","reCaptchaChecked","_isEmailValid","email","test","_handleChange","name","e","value","target","isChecked","_PrivacyPolicyRef","current","checked","_hasFirstNameValue","_FirstNameInputRef","_hasLastNameValue","_LastNameInputRef","_hasEmailAddressValue","_EmailAddressInputRef","_hasFormContainValues","_handleSubscribe","bind","render","joinNowButtonAriaLabel","viewProps","renderView","_renderFirstAndLastNameInput","_renderEmailInput","_renderCheckboxPrivacyPolicy","_renderSubscribeButton","_renderAlert","ref","type","onChange","placeholder","firstNamePlaceholderText","required","lastNamePlaceholderText","emailAddressPlaceholderText","id","href","privacyPolicyLink","subscribeButtonLabel","requiredErrorMessage","requiredTextErrorMessage","emailValidationErrorMessage","privacyPolicyErrorMessage","responseMessage","contact","emailType","dataFields","key","status","actionContext","programID","programErrorMessage","programSuccessMessage","isError","response","vSIInitiateRestCallAsync","callerContext","JSON","stringify","result","responseResult","parse","errorMessage","message","length","contactCreated","program","contacts","programId","programResponse","error","_clearValues","telemetry","module","exports","ReactDOM","VSIRestAPIHandlerExtensionClass","odataObject","Id","ExtensionProperties","undefined","i","substr","lastIndexOf","concat","EntityClasses","createVSIInitiateRestCallInput","targetSystem","methodType","requestHeader","requestBody","urlParams","servicePath","DataServiceQuery","DataServiceEntities","vSIGetAPIResponseQuery","createDataServiceRequestForOperation","bypassCache","returnEntity","callActionOrExecute","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn"],"mappings":"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","file":"static/js/99.9bbdab221a04827a0114.chunk.js","sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IDobbiesFooterNewsletterViewProps } from './dobbies-footer-newsletter';\r\n\r\nexport default (props: IDobbiesFooterNewsletterViewProps) => {\r\n const { moduleProps, contentProps, newsletterheading, newsletterDescription, joinNow, subscribeForm } = props;\r\n\r\n /* VSI Customization - START */\r\n /* condition either to show or hide the footer newsletter */\r\n\r\n if (props.context.request.query!.onlyBody && props.context.request.query!.onlyBody === 'true') {\r\n return null;\r\n }\r\n /* VSI Customization - END */\r\n\r\n return (\r\n \r\n \r\n {newsletterheading}\r\n {newsletterDescription}\r\n {joinNow}\r\n \r\n {subscribeForm}\r\n \r\n );\r\n};\r\n","import { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IDobbiesModalProps {\r\n modalBodySlots?: React.ReactNode[];\r\n modalBodyElement?: JSX.Element;\r\n isOpen: boolean;\r\n className: string;\r\n modalTitle: JSX.Element;\r\n modalFooter: JSX.Element;\r\n}\r\n\r\nconst DobbiesModal: React.FC = (props: IDobbiesModalProps) => {\r\n return (\r\n \r\n {props.modalTitle && {props.modalTitle}}\r\n {props.modalBodySlots && {props.modalBodySlots}}\r\n {props.modalBodyElement && {props.modalBodyElement}}\r\n {props.modalFooter && {props.modalFooter}}\r\n \r\n );\r\n};\r\n\r\nexport default DobbiesModal;","/*---------------------------------------------------------------------------------------------\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 { IDobbiesFooterNewsletterProps, INewsletterheadingData } from './dobbies-footer-newsletter.props.autogenerated';\r\n\r\nimport { Button, IModuleProps, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { vSIInitiateRestCallAsync } from '../../dotdigital-extension/DataActionExtension.g';\r\nimport DobbiesModal from './components/dobbies-modal';\r\n\r\nexport interface IDobbiesFooterNewsletterViewProps extends IDobbiesFooterNewsletterProps<{}> {\r\n moduleProps: IModuleProps;\r\n contentProps: INodeProps;\r\n newsletterheading: React.ReactNode;\r\n newsletterDescription: React.ReactNode;\r\n joinNow: React.ReactNode;\r\n subscribeForm: React.ReactNode | undefined;\r\n}\r\nexport interface IDobbiesFooterNewsletterState {\r\n isPopupOpen: boolean;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n privacyPolicyChecked: boolean;\r\n firstNameError: boolean;\r\n lastNameError: boolean;\r\n emailError: boolean;\r\n requiredError: boolean;\r\n emailValidationError: boolean;\r\n privacyPolicyError: boolean;\r\n recaptchaError: boolean;\r\n responseReceived: boolean;\r\n responseError: boolean;\r\n reCaptchaChecked: boolean;\r\n}\r\nexport interface ISubscribeNewsletterForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n nameInput: React.ReactNode;\r\n emailInput: React.ReactNode;\r\n checkboxPrivacyPolicy: React.ReactNode;\r\n subscribeButtton: React.ReactNode;\r\n}\r\nexport interface IErrorMessage {\r\n message: string;\r\n}\r\ninterface IDataField {\r\n key: string;\r\n value: string;\r\n}\r\n// Contact created Result\r\nexport interface IContactCreatedResponse {\r\n id: number;\r\n email: string;\r\n optInType: string;\r\n emailType: string;\r\n dataFields: IDataField[];\r\n status: string;\r\n}\r\n// To add contact in program\r\ninterface IPreferenceProgram {\r\n programId: number;\r\n contacts: number[];\r\n}\r\n/**\r\n *\r\n * DobbiesFooterNewsletter component\r\n * @extends {React.PureComponent, IDobbiesFooterNewsletterState>}\r\n */\r\nclass DobbiesFooterNewsletter extends React.PureComponent, IDobbiesFooterNewsletterState> {\r\n private _FirstNameInputRef: React.RefObject;\r\n private _LastNameInputRef: React.RefObject;\r\n private _EmailAddressInputRef: React.RefObject;\r\n private _PrivacyPolicyRef: React.RefObject;\r\n private hasFirstNameValue: boolean = false;\r\n private hasLastNameValue: boolean = false;\r\n private hasEmailAddressValue: boolean = false;\r\n private hasFormContainValues: boolean = false;\r\n private requiredErrorMessage: string | undefined;\r\n private emailValidationErrorMessage: string | undefined;\r\n private privacyPolicyErrorMessage: string | undefined;\r\n private responseMessage: string | undefined;\r\n\r\n constructor(props: IDobbiesFooterNewsletterProps<{}>, state: IDobbiesFooterNewsletterState) {\r\n super(props);\r\n this._FirstNameInputRef = React.createRef();\r\n this._LastNameInputRef = React.createRef();\r\n this._EmailAddressInputRef = React.createRef();\r\n this._PrivacyPolicyRef = React.createRef();\r\n this._handleSubscribe = this._handleSubscribe.bind(this);\r\n\r\n this.state = {\r\n isPopupOpen: false,\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n firstNameError: false,\r\n lastNameError: false,\r\n emailError: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false,\r\n recaptchaError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { newsletterheading, newsletterDescription, className },\r\n resources: { joinNowLabel, joinNowButtonAriaLabel }\r\n } = this.props;\r\n const viewProps = {\r\n ...this.props,\r\n moduleProps: { className: classnames('ms-dobbies-footer-newsletter', className), moduleProps: this.props, tag: 'div' },\r\n contentProps: { className: 'ms-dobbies-footer-newsletter__content', tag: 'div' },\r\n newsletterheading: this._getHeading(newsletterheading, className),\r\n newsletterDescription: this._getNewsLetterText(newsletterDescription, className),\r\n joinNow: this._getJoinNowButton(joinNowLabel, joinNowButtonAriaLabel, className),\r\n subscribeForm: this.state.isPopupOpen && this._renderPopUp()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /* Following function renders heading of newsletter */\r\n private _getHeading = (newsletterheading: INewsletterheadingData | undefined, className: string | undefined): React.ReactNode => {\r\n return (\r\n \r\n {newsletterheading && (\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n /* Following function renders description of newsletter */\r\n private _getNewsLetterText = (newsletterDescription: Msdyn365.RichText | undefined, className: string | undefined): React.ReactNode => {\r\n return (\r\n
\r\n {newsletterDescription && }\r\n
\r\n );\r\n };\r\n\r\n /* Following function renders Join Now Button */\r\n private _getJoinNowButton = (\r\n joinNowLabel: string | undefined,\r\n joinNowAriaLabel: string | undefined,\r\n className: string | undefined\r\n ): React.ReactNode => {\r\n return (\r\n \r\n {joinNowLabel}\r\n \r\n );\r\n };\r\n // Open popup\r\n private _togglePopup = (event: React.MouseEvent) => {\r\n this.setState({ isPopupOpen: true });\r\n };\r\n // Open popup by clicking on join now button\r\n private _renderPopUp = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n // Render Popup title\r\n private _renderPopupTitle = () => {\r\n const { popUpHeading } = this.props.config;\r\n return (\r\n \r\n \r\n {popUpHeading && (\r\n \r\n )}\r\n \r\n );\r\n };\r\n // Render popup footer\r\n private _renderPopupFooter = () => {\r\n return <>;\r\n };\r\n // Render popup body to show input fields\r\n private _renderPopupBody = () => {\r\n const subscribeResponse = this._getSubscribeResponse();\r\n const subscribeForm = this._renderForm();\r\n const { FormWrapper, FormContainer, nameInput, emailInput, checkboxPrivacyPolicy, subscribeButtton } = subscribeForm;\r\n return (\r\n \r\n {subscribeResponse}\r\n \r\n {nameInput}\r\n {emailInput}\r\n {checkboxPrivacyPolicy}\r\n {subscribeButtton}\r\n \r\n \r\n \r\n );\r\n };\r\n // Close popup and reset state\r\n private _closePopup = () => {\r\n this.setState({\r\n isPopupOpen: false,\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n firstNameError: false,\r\n lastNameError: false,\r\n emailError: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false,\r\n recaptchaError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false\r\n });\r\n };\r\n\r\n // Get all input fields and return as form fields\r\n private _renderForm(): ISubscribeNewsletterForm {\r\n return {\r\n FormWrapper: {\r\n className: 'newsletter-subscription',\r\n tag: 'div'\r\n },\r\n FormContainer: {\r\n className: 'newsletter-subscription-div',\r\n tag: 'div'\r\n },\r\n nameInput: this._renderFirstAndLastNameInput(),\r\n emailInput: this._renderEmailInput(),\r\n checkboxPrivacyPolicy: this._renderCheckboxPrivacyPolicy(),\r\n subscribeButtton: this._renderSubscribeButton()\r\n };\r\n }\r\n\r\n private _renderFirstAndLastNameInput(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n {this.state.firstNameError ? this._renderAlert('first-name-input') : ''}\r\n {this.state.lastNameError ? this._renderAlert('last-name-input') : ''}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderEmailInput(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.emailError || this.state.emailValidationError ? this._renderAlert('email-address-input') : ''}\r\n \r\n
\r\n );\r\n }\r\n\r\n private _isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private _renderCheckboxPrivacyPolicy(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.privacyPolicyError ? this._renderAlert('checkbox-privacy-policy') : ''}\r\n
\r\n \r\n \r\n

\r\n I accept the Privacy Policy\r\n

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderSubscribeButton(): React.ReactNode {\r\n return (\r\n
\r\n \r\n {this.props.resources.subscribeButtonLabel}\r\n \r\n
\r\n );\r\n }\r\n // Store input fields value to state\r\n private _handleChange = (name: string) => (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (name) {\r\n case 'firstName': {\r\n this.setState({\r\n firstName: value,\r\n firstNameError: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false\r\n });\r\n break;\r\n }\r\n case 'lastName': {\r\n this.setState({\r\n lastName: value,\r\n lastNameError: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false\r\n });\r\n break;\r\n }\r\n case 'emailAddress': {\r\n this.setState({\r\n emailAddress: value,\r\n emailError: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false\r\n });\r\n break;\r\n }\r\n case 'privacyPolicy': {\r\n const isChecked =\r\n this._PrivacyPolicyRef.current && this._PrivacyPolicyRef.current.checked\r\n ? this._PrivacyPolicyRef.current.checked\r\n : false;\r\n this.setState({\r\n privacyPolicyChecked: isChecked,\r\n requiredError: false,\r\n emailValidationError: false,\r\n privacyPolicyError: false\r\n });\r\n break;\r\n }\r\n default: {\r\n this.setState({ requiredError: false, emailValidationError: false, privacyPolicyError: false });\r\n }\r\n }\r\n };\r\n // Show error message on invalid email or if checkbox is not checked\r\n private _renderAlert(className: string): JSX.Element {\r\n const inputBoxErrors = this.state.firstNameError || this.state.lastNameError || this.state.emailError;\r\n if (inputBoxErrors) {\r\n this.requiredErrorMessage = this.props.resources.requiredTextErrorMessage;\r\n }\r\n if (this.state.emailAddress !== '' && this.state.emailValidationError) {\r\n this.emailValidationErrorMessage = this.props.resources.emailValidationErrorMessage;\r\n }\r\n if (!this.state.privacyPolicyChecked) {\r\n this.privacyPolicyErrorMessage = this.props.resources.privacyPolicyErrorMessage;\r\n }\r\n const requiredError = this.state.requiredError;\r\n const emailValidationError = this.state.emailValidationError;\r\n const privacyPolicyError = this.state.privacyPolicyError;\r\n return (\r\n <>\r\n {requiredError && (\r\n \r\n {this.requiredErrorMessage && (\r\n <>\r\n \r\n )}\r\n {emailValidationError && (\r\n \r\n {this.emailValidationErrorMessage && (\r\n <>\r\n \r\n )}\r\n {privacyPolicyError && (\r\n \r\n {this.privacyPolicyErrorMessage && (\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n // Get API response\r\n private _getSubscribeResponse(): React.ReactNode {\r\n return this.state.responseReceived && this.responseMessage ? (\r\n
\r\n

\r\n {this.responseMessage}\r\n

\r\n
\r\n ) : null;\r\n }\r\n\r\n private _hasFirstNameValue = () => {\r\n return this._FirstNameInputRef && this._FirstNameInputRef.current && this._FirstNameInputRef.current.value ? true : false;\r\n };\r\n\r\n private _hasLastNameValue = () => {\r\n return this._LastNameInputRef && this._LastNameInputRef.current && this._LastNameInputRef.current.value ? true : false;\r\n };\r\n\r\n private _hasEmailAddressValue = () => {\r\n return this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value ? true : false;\r\n };\r\n\r\n private _hasFormContainValues = () => {\r\n return this.hasFirstNameValue && this.hasLastNameValue && this.hasEmailAddressValue ? true : false;\r\n };\r\n\r\n private async _handleSubscribe(\r\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\r\n ): Promise {\r\n this.hasFirstNameValue = this._hasFirstNameValue();\r\n this.hasLastNameValue = this._hasLastNameValue();\r\n this.hasEmailAddressValue = this._hasEmailAddressValue();\r\n const email = this.hasEmailAddressValue ? this._EmailAddressInputRef.current!.value : '';\r\n if (!this.hasFirstNameValue) {\r\n this.setState({\r\n firstNameError: true,\r\n requiredError: true\r\n });\r\n } else if (!this.hasLastNameValue) {\r\n this.setState({ lastNameError: true, requiredError: true });\r\n } else if (!this.hasEmailAddressValue) {\r\n this.setState({ emailError: true, requiredError: true });\r\n } else if (!this._isEmailValid(email)) {\r\n this.setState({ emailValidationError: true });\r\n } else if (!this._PrivacyPolicyRef.current!.checked) {\r\n this.setState({ privacyPolicyChecked: false, privacyPolicyError: true });\r\n } else {\r\n this.hasFormContainValues = this._hasFormContainValues();\r\n if (this.hasFormContainValues && this.state.privacyPolicyChecked && !this.state.emailValidationError) {\r\n try {\r\n // Make subscribe newsletter data-action call here with user data\r\n const contact = {\r\n email: this.state.emailAddress,\r\n emailType: 'Html',\r\n dataFields: [\r\n { key: 'FIRSTNAME', value: this.state.firstName },\r\n { key: 'LASTNAME', value: this.state.lastName }\r\n ],\r\n status: 'Subscribed'\r\n };\r\n const {\r\n context: { actionContext },\r\n config: { programID },\r\n resources: { programErrorMessage, programSuccessMessage }\r\n } = this.props;\r\n let isError = false;\r\n if (programID) {\r\n // call api here to create contact\r\n const response = await vSIInitiateRestCallAsync(\r\n { callerContext: actionContext },\r\n 'DotDigital',\r\n 'post',\r\n \"{'cache-control':'no-cache' , 'Accept':'application/json'}\",\r\n JSON.stringify(contact),\r\n '',\r\n `v2/contacts`\r\n );\r\n if (response.result) {\r\n const responseResult = JSON.parse(response.result);\r\n const errorMessage: IErrorMessage = responseResult;\r\n if (errorMessage.message && errorMessage.message.length > 0) {\r\n // Address book isn't found or any other issue So set error message\r\n isError = true;\r\n } else {\r\n // Contact created so now add contact in program\r\n // Get contact id\r\n const contactCreated: IContactCreatedResponse = responseResult;\r\n if (contactCreated.id) {\r\n // add this id in given programId\r\n const program: IPreferenceProgram = {\r\n contacts: [contactCreated.id],\r\n programId: programID\r\n };\r\n const programResponse = await vSIInitiateRestCallAsync(\r\n { callerContext: actionContext },\r\n 'DotDigital',\r\n 'post',\r\n \"{'cache-control':'no-cache' , 'Accept':'application/json'}\",\r\n JSON.stringify(program),\r\n '',\r\n `v2/programs/enrolments`\r\n );\r\n if (programResponse.result) {\r\n const programResponseResult = JSON.parse(programResponse.result);\r\n const error: IErrorMessage = programResponseResult;\r\n if (error.message && error.message.length > 0) {\r\n // Error in adding contact in Program\r\n // display error alert\r\n isError = true;\r\n } else {\r\n this.responseMessage = programSuccessMessage;\r\n // Contact has been added to address book\r\n this.setState({\r\n responseReceived: true,\r\n responseError: false,\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n requiredError: false,\r\n emailValidationError: false,\r\n recaptchaError: false\r\n });\r\n this._clearValues();\r\n }\r\n } else {\r\n isError = true;\r\n }\r\n } else {\r\n isError = true;\r\n }\r\n }\r\n }\r\n } else {\r\n // display error alert\r\n isError = true;\r\n }\r\n if (isError) {\r\n this.responseMessage = programErrorMessage;\r\n this.setState({ responseReceived: true, responseError: true });\r\n }\r\n } catch (e) {\r\n // @ts-ignore\r\n this.props.telemetry.error(e);\r\n this.responseMessage = this.props.resources.programErrorMessage;\r\n this.setState({ responseReceived: true, responseError: true });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _clearValues(): void {\r\n if (this._PrivacyPolicyRef.current) {\r\n this._PrivacyPolicyRef.current.checked = false;\r\n }\r\n }\r\n}\r\n\r\nexport default DobbiesFooterNewsletter;\r\n","module.exports = React;","module.exports = ReactDOM;","\r\n // tslint:disable\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g'; \r\n \r\n \r\n /**\r\n * VSIRestAPIHandler entity interface.\r\n */\r\n export interface IVSIRestAPIHandler {\r\n Id: number;\r\n result?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n }\r\n \r\n /**\r\n * VSIRestAPIHandler entity class.\r\n */\r\n export class VSIRestAPIHandlerExtensionClass implements IVSIRestAPIHandler {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Id: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Id = odataObject.Id;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i])\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n","\r\n /*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n // tslint:disable\r\n import { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\n // @ts-ignore\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n \r\n \r\n // @ts-ignore\r\n function vSIGetAPIResponseQuery(id?: number): DataServiceQuery {\r\n const key = (id) ? { Id: id } :null;\r\n return new DataServiceQuery(\"VSIGetRestAPIResponse\", \"VSIRestAPIHandler\", DataServiceEntities.VSIRestAPIHandlerExtensionClass, key);\r\n }\r\n\r\n \r\n export function createVSIInitiateRestCallInput(targetSystem: string, methodType: string, requestHeader: string, requestBody: string, urlParams: string, servicePath: string): IDataServiceRequest {\r\n const query = vSIGetAPIResponseQuery();\r\n return query.createDataServiceRequestForOperation('VSI_CallGenericRestAPIHandler', true, DataServiceEntities.VSIRestAPIHandlerExtensionClass, 'false', {bypassCache: 'get', returnEntity: 'DataServiceEntities.IVSIRestAPIHandler'}, {targetSystem: targetSystem, methodType: methodType, requestHeader: requestHeader, requestBody: requestBody, urlParams: urlParams, servicePath: servicePath });\r\n }\r\n\r\n \r\n export function vSIInitiateRestCallAsync(context: IContext, targetSystem: string, methodType: string, requestHeader: string, requestBody: string, urlParams: string, servicePath: string): AsyncResult {\r\n const request = createVSIInitiateRestCallInput(targetSystem, methodType, requestHeader, requestBody, urlParams, servicePath);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n ","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['dobbies-footer-newsletter'] = {\n c: () => require('partner/modules/dobbies-footer-newsletter/dobbies-footer-newsletter.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-footer-newsletter',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-footer-newsletter'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-footer-newsletter|dobbies-footer-newsletter'] = {\n c: () => require('partner/modules/dobbies-footer-newsletter/dobbies-footer-newsletter.view.tsx'),\n cn: '__local__-__local__-dobbies-footer-newsletter'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };"],"sourceRoot":""}