{"version":3,"file":"static/js/89ac9e6aed9f6d827a0d.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/actions/show-cookie-dialog-state.ts?b775","webpack://Dobbies.Commerce/./src/modules/dobbies-cookie-compliance/components/accept-button.tsx?7cb3","webpack://Dobbies.Commerce/./src/modules/dobbies-cookie-compliance/components/links.tsx?52fd","webpack://Dobbies.Commerce/./src/modules/dobbies-cookie-compliance/dobbies-cookie-compliance.tsx?e5f5","webpack://Dobbies.Commerce/./src/modules/dobbies-cookie-compliance/dobbies-cookie-compliance.view.tsx?2590","webpack://Dobbies.Commerce/./lib/dobbies-cookie-compliance/module-registration.js?20a3","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"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 {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\n/**\r\n * CheckoutModulesStateShare Input Action\r\n */\r\nexport class ShowCookieManageModalInput implements IActionInput {\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `showCookieManageModal`;\r\n public getCacheObjectType = () => 'showCookieManageModal';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IShowCookieManageModalState {\r\n showCookieManageModal?: boolean;\r\n}\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new ShowCookieManageModalInput();\r\n};\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function updateCartStateAction(input: ShowCookieManageModalInput, ctx: IActionContext): Promise {\r\n return {\r\n showCookieManageModal: undefined\r\n };\r\n}\r\n/**\r\n * SampleState - create action\r\n */\r\nexport default createObservableDataAction({\r\n action: >updateCartStateAction,\r\n input: createInput\r\n});\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICookieComplianceAcceptButton {\r\n acceptCookiesButtonText?: string;\r\n acceptCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n}\r\n\r\nexport const CookieComplianceAcceptButton: React.FC = ({\r\n acceptCookiesButtonText,\r\n acceptCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n {acceptCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IActionLinksData } from '../dobbies-cookie-compliance.props.autogenerated';\r\n\r\nexport interface ICookieComplianceLinks {\r\n links: IActionLinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CookieComplianceLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n \r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n \r\n );\r\n }\r\n\r\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\n\r\nexport default CookieComplianceLinks;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n/* eslint-disable security/detect-object-injection */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { reaction } from 'mobx';\r\n\r\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\r\nimport { IDobbiesCookieComplianceConfig, IDobbiesCookieComplianceProps } from './dobbies-cookie-compliance.props.autogenerated';\r\nimport { IDobbiesCookieComplianceData } from './dobbies-cookie-compliance.data';\r\n\r\n/**\r\n * Alert state interface.\r\n */\r\n\r\nexport interface ICheckboxState {\r\n name: CheckboxType;\r\n value: boolean;\r\n}\r\n\r\nexport interface IAlertState {\r\n visible: boolean;\r\n checkboxesChecked: ICheckboxState[];\r\n showModal?: boolean;\r\n}\r\n\r\nexport enum CheckboxType {\r\n Functional = 'Functional',\r\n Analytics = 'Analytics',\r\n Unclassified = 'Unclassified'\r\n}\r\n\r\n/**\r\n * Cookie compliance view props interface.\r\n */\r\nexport interface ICookieComplianceViewProps extends IDobbiesCookieComplianceProps<{}> {\r\n CookieComplianceBanner: IModuleProps;\r\n AlertProps: IAlertProps;\r\n Content: INodeProps;\r\n text?: React.ReactNode;\r\n checkboxes?: React.ReactNode;\r\n links?: React.ReactNode;\r\n acceptButton?: React.ReactNode;\r\n className: string;\r\n showCookieModal?: boolean;\r\n onDismiss(): void;\r\n onRejectAll?(): void;\r\n onSaveSettings?(): void;\r\n onManageCookiesClicked?(): void;\r\n onManageCookiesModalClose?(): void;\r\n showModal?: boolean;\r\n isModuleVisible?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CookieCompliance component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookieCompliance extends React.PureComponent, IAlertState> {\r\n private readonly cookieRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n private readonly analyticalCookies = [\r\n '__qca',\r\n '_clck',\r\n '_clsk',\r\n '_ga',\r\n '_gcl_au',\r\n '_gid',\r\n 'sa-user-id',\r\n 'unbxd.userId',\r\n 'unbxd.visit',\r\n 'unbxd.visitId'\r\n ];\r\n private readonly functionalCookies = [\r\n 'ai_session',\r\n 'ai_user',\r\n '_msdyn365___tuid_',\r\n 'd365mkt',\r\n 'recently-viewed',\r\n 'ai_session',\r\n 'ai_user'\r\n ];\r\n private readonly unclassifiedCookies = ['dmSessionID', 'recordID', 'receive-cookie-deprecation'];\r\n\r\n public constructor(props: IDobbiesCookieComplianceProps) {\r\n super(props);\r\n this.state = {\r\n visible: false,\r\n checkboxesChecked: [\r\n {\r\n name: CheckboxType.Functional,\r\n value: false\r\n },\r\n {\r\n name: CheckboxType.Analytics,\r\n value: false\r\n },\r\n {\r\n name: CheckboxType.Unclassified,\r\n value: false\r\n }\r\n ]\r\n };\r\n this.cookieRef = React.createRef();\r\n this._onDismiss = this._onDismiss.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const { context } = this.props;\r\n\r\n const cookieConsent = context.request.cookies.get('cookieConsent');\r\n const recentlyViewed = context.request.cookies.get('recently-viewed');\r\n\r\n if (context.request.cookies.isConsentGiven() && !cookieConsent?.value && !recentlyViewed?.value) {\r\n context.request.cookies.deleteConsentCookie();\r\n this.setState({ visible: true });\r\n }\r\n\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n this.setState({ visible: true });\r\n }\r\n\r\n if (context && context.request && context.request.cookies && context.request.cookies.isConsentGiven() && cookieConsent) {\r\n if (Array.isArray(cookieConsent.value)) {\r\n for (const cc of cookieConsent.value) {\r\n if (cc['name'] === this.state.checkboxesChecked[0].name && cc['value'] === false) {\r\n this.rejectFunctionalCookies();\r\n }\r\n if (cc['name'] === this.state.checkboxesChecked[1].name && cc['value'] === false) {\r\n this.rejectAnalyticsCookies();\r\n }\r\n if (cc['name'] === this.state.checkboxesChecked[2].name && cc['value'] === false) {\r\n this.rejectUnClassifiedCookies();\r\n }\r\n }\r\n }\r\n }\r\n\r\n reaction(\r\n () => this.props.data.showCookieManageModal.result,\r\n () => {\r\n if (this.props.data.showCookieManageModal.result?.showCookieManageModal) {\r\n this.openManageCookiesModal();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public handleCheckboxClicked(index: number) {\r\n const newCheckboxesChecked = [...this.state.checkboxesChecked];\r\n newCheckboxesChecked[index].value = !newCheckboxesChecked[index].value;\r\n this.setState({ checkboxesChecked: newCheckboxesChecked });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, context, resources, telemetry } = this.props;\r\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\r\n const { visible } = this.state;\r\n\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n let moduleConfig: IDobbiesCookieComplianceConfig;\r\n\r\n try {\r\n moduleConfig = config;\r\n } catch (error) {\r\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\r\n // @ts-ignore\r\n return
{error}
;\r\n }\r\n\r\n // if (isConsentGiven && !visible) {\r\n // this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\r\n // return null;\r\n // }\r\n\r\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\r\n return <>;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n CookieComplianceBanner: {\r\n moduleProps: this.props,\r\n className: classnames('ms-cookie-compliance cookie-redesign', moduleConfig.className),\r\n id: 'cookieBanner',\r\n ref: this.cookieRef\r\n },\r\n AlertProps: {\r\n className: 'ms-cookie-compliance__container',\r\n color: 'white',\r\n fade: false\r\n },\r\n Content: {\r\n className: 'ms-cookie-compliance__content'\r\n },\r\n text: moduleConfig.content && (\r\n \r\n ),\r\n checkboxes: (\r\n
    \r\n
  • \r\n \r\n\r\n
    \r\n \r\n

    \r\n These are cookies that are required for the operation of our website. They include, for example, cookies\r\n that enable you to use a shopping cart\r\n

    \r\n
    \r\n
  • \r\n
  • \r\n this.handleCheckboxClicked(1)}\r\n />{' '}\r\n
    \r\n \r\n

    \r\n These cookies allow us to recognise and count the number of visitors and to see how visitors move around our\r\n website when they are using it. This helps us to improve the way our website works, for example, by ensuring\r\n that users are finding what they are looking for easily\r\n

    \r\n
    \r\n
  • \r\n
  • \r\n this.handleCheckboxClicked(0)}\r\n />{' '}\r\n
    \r\n \r\n

    \r\n These cookies are used to recognise you when you return to our website. This enables us to personalise our\r\n content for you, greet you by name and remember your preferences (for example, your choice of language or\r\n region)\r\n

    \r\n
    \r\n
  • \r\n
  • \r\n this.handleCheckboxClicked(2)}\r\n />{' '}\r\n
    \r\n \r\n

    \r\n These cookies record your visit to our website, the pages you have visited and the links you have followed.\r\n We will use this information to make our website and the advertising displayed on it more relevant to your\r\n interests\r\n

    \r\n
    \r\n
  • \r\n
\r\n ),\r\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\r\n \r\n ),\r\n acceptButton: (\r\n {\r\n this._onAcceptAll();\r\n }}\r\n acceptCookiesButtonText={acceptCookiesButtonText}\r\n acceptCookiesButtonAriaLabel={acceptCookiesAriaLabel}\r\n telemetryContent={this.telemetryContent}\r\n />\r\n ),\r\n onRejectAll: this.rejectAll,\r\n onSaveSettings: this.onSaveSettings,\r\n onManageCookiesClicked: this.openManageCookiesModal,\r\n onManageCookiesModalClose: this.closeManageCookiesModal,\r\n showModal: this.state.showModal,\r\n isModuleVisible: !isConsentGiven && visible\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles Link content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\r\n if (this.props.config.actionLinks?.[linkIndex]) {\r\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Handles content change event.\r\n * @param event - Event.\r\n */\r\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.content = event.target.value;\r\n };\r\n\r\n private openManageCookiesModal = () => {\r\n this.setConsentGivenCookiesCheckboxes();\r\n this.setState({ showModal: true });\r\n };\r\n private closeManageCookiesModal = () => {\r\n this.setState({ showModal: false });\r\n };\r\n\r\n private setConsentGivenCookiesCheckboxes = () => {\r\n const cookieConsentCookie = this.props.context.request.cookies.get('cookieConsent')?.value;\r\n if (cookieConsentCookie && Array.isArray(cookieConsentCookie) && cookieConsentCookie.length) {\r\n const newCheckboxesChecked = [...this.state.checkboxesChecked];\r\n for (let i = 0; i < cookieConsentCookie.length; i++) {\r\n if (cookieConsentCookie[i]['name'] === 'Analytics' && cookieConsentCookie[i]['value'] === true) {\r\n newCheckboxesChecked[1].value = true;\r\n }\r\n if (cookieConsentCookie[i]['name'] === 'Functional' && cookieConsentCookie[i]['value'] === true) {\r\n newCheckboxesChecked[0].value = true;\r\n }\r\n if (cookieConsentCookie[i]['name'] === 'Unclassified' && cookieConsentCookie[i]['value'] === true) {\r\n newCheckboxesChecked[2].value = true;\r\n }\r\n }\r\n this.setState({ checkboxesChecked: newCheckboxesChecked });\r\n }\r\n };\r\n\r\n private getNecessaryCookiesRemovedList(cookieNames: string[]): string[] {\r\n return cookieNames.filter(\r\n cn =>\r\n !cn.includes('product') &&\r\n !cn.includes('notification') &&\r\n !cn.includes('store') &&\r\n !cn.includes('popup') &&\r\n !cn.includes('_msdyn365___cart_') &&\r\n cn !== '_msdyn365___cart_'\r\n );\r\n }\r\n\r\n private rejectAll = () => {\r\n try {\r\n const cookies = this.getDobbiesAllCookiesNames();\r\n const cookieNames: string[] = [];\r\n for (const [key, value] of Object.entries(cookies)) {\r\n cookieNames.push(key);\r\n console.log('Cookie Got', key, value);\r\n }\r\n this.removeCookies(this.getNecessaryCookiesRemovedList(cookieNames), this.props.context);\r\n } catch (error) {\r\n console.log('Error', error);\r\n }\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n const checkBoxesSelected = this.state.checkboxesChecked;\r\n for (const checkboxSelection of checkBoxesSelected) {\r\n checkboxSelection.value = false;\r\n }\r\n const cookieConsent = checkBoxesSelected;\r\n context.request.cookies.set('cookieConsent', cookieConsent, {\r\n expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365)\r\n });\r\n context.request.cookies.set('recently-viewed', [], { expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365) });\r\n // location.reload();\r\n }\r\n this.setState({ visible: false });\r\n this._onDismiss();\r\n };\r\n\r\n private rejectAnalyticsCookies = () => {\r\n try {\r\n const cookies = this.getDobbiesAllCookiesNames();\r\n const cookieNames: string[] = [];\r\n for (const [key, value] of Object.entries(cookies)) {\r\n cookieNames.push(key);\r\n console.log('Cookie Got', key, value);\r\n }\r\n this.removeCookies(\r\n cookieNames.filter(cn => this.analyticalCookies.includes(cn)),\r\n this.props.context\r\n );\r\n } catch (error) {\r\n console.log('Error', error);\r\n }\r\n };\r\n\r\n private rejectFunctionalCookies = () => {\r\n try {\r\n const cookies = this.getDobbiesAllCookiesNames();\r\n const cookieNames: string[] = [];\r\n for (const [key, value] of Object.entries(cookies)) {\r\n cookieNames.push(key);\r\n console.log('Cookie Got', key, value);\r\n }\r\n this.removeCookies(\r\n this.getNecessaryCookiesRemovedList(cookieNames).filter(cn => this.functionalCookies.includes(cn)),\r\n this.props.context\r\n );\r\n } catch (error) {\r\n console.log('Error', error);\r\n }\r\n };\r\n\r\n private rejectUnClassifiedCookies = () => {\r\n try {\r\n const cookies = this.getDobbiesAllCookiesNames();\r\n const cookieNames: string[] = [];\r\n for (const [key, value] of Object.entries(cookies)) {\r\n cookieNames.push(key);\r\n console.log('Cookie Got', key, value);\r\n }\r\n this.removeCookies(\r\n this.getNecessaryCookiesRemovedList(cookieNames).filter(cn => this.unclassifiedCookies.includes(cn)),\r\n this.props.context\r\n );\r\n } catch (error) {\r\n console.log('Error', error);\r\n }\r\n };\r\n\r\n private getDobbiesAllCookiesNames = () => {\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n const cookiePairs = document.cookie.split(';');\r\n const cookies: { [key: string]: string } = {};\r\n for (let i = 0; i < cookiePairs.length; i++) {\r\n const pair = cookiePairs[i].split('=');\r\n cookies[`${pair[0]}`.trim()] = decodeURIComponent(pair.slice(1).join('='));\r\n }\r\n if (this.props.config.additionalCookiesToBeRemoved && this.props.config.additionalCookiesToBeRemoved.length) {\r\n for (const addCookie of this.props.config.additionalCookiesToBeRemoved) {\r\n if (!cookies[addCookie]) {\r\n cookies[addCookie] = 'addtional_cookie';\r\n }\r\n }\r\n }\r\n return cookies;\r\n }\r\n return {};\r\n };\r\n\r\n private onSaveSettings = () => {\r\n if (!this.state.checkboxesChecked[0].value && !this.state.checkboxesChecked[1].value && !this.state.checkboxesChecked[2].value) {\r\n this.rejectAll();\r\n return;\r\n }\r\n\r\n if (!this.state.checkboxesChecked[0].value) {\r\n this.rejectFunctionalCookies();\r\n }\r\n\r\n if (!this.state.checkboxesChecked[1].value) {\r\n this.rejectAnalyticsCookies();\r\n }\r\n\r\n if (!this.state.checkboxesChecked[2].value) {\r\n this.rejectUnClassifiedCookies();\r\n }\r\n this._onDismiss();\r\n };\r\n\r\n private removeCookiesForAllDomains(name: string) {\r\n const cookieStr = `${name.replace(':', '')}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.dynamics.com;`;\r\n document.cookie = cookieStr;\r\n const cookieStr2 = `${name.replace(\r\n ':',\r\n ''\r\n )}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=dobbies-acceptance.commerce.dynamics.com;`;\r\n document.cookie = cookieStr2;\r\n const cookieStr3 = `${name.replace(':', '')}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=dobbies.com;`;\r\n document.cookie = cookieStr3;\r\n const cookieStr4 = `${name.replace(':', '')}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;`;\r\n document.cookie = cookieStr4;\r\n }\r\n\r\n private removeCookies(\r\n data: string[],\r\n context: MsDyn365.ICoreContext<{\r\n [x: string]: any;\r\n }>\r\n ) {\r\n data.forEach(cookieName => {\r\n if (context.request.cookies.get(cookieName.trim())) {\r\n const expires = new Date();\r\n expires.setTime(expires.getTime() - 1);\r\n document.cookie = `${cookieName.trim()}=; expires=${expires.toUTCString()}; path=/`;\r\n context.request.cookies.remove(cookieName.trim());\r\n this.removeCookiesForAllDomains(cookieName.trim());\r\n }\r\n });\r\n }\r\n\r\n private _onDismiss(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n\r\n const cookieConsent = this.state.checkboxesChecked;\r\n context.request.cookies.set('cookieConsent', cookieConsent, {\r\n expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365)\r\n });\r\n context.request.cookies.set('recently-viewed', [], { expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365) });\r\n location.reload();\r\n }\r\n this.setState({ visible: false });\r\n }\r\n\r\n private _onAcceptAll(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n const checkBoxesSelected = this.state.checkboxesChecked;\r\n for (const checkboxSelection of checkBoxesSelected) {\r\n checkboxSelection.value = true;\r\n }\r\n const cookieConsent = checkBoxesSelected;\r\n context.request.cookies.set('cookieConsent', cookieConsent, {\r\n expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365)\r\n });\r\n context.request.cookies.set('recently-viewed', [], { expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365) });\r\n location.reload();\r\n }\r\n this.setState({ visible: false });\r\n }\r\n}\r\n\r\nexport default CookieCompliance;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICookieComplianceViewProps } from './dobbies-cookie-compliance';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst CookieComplianceView: React.FC = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, checkboxes } = props;\r\n\r\n // const [isModalOpen, setIsModalOpen] = React.useState(false);\r\n const onCookieCloseClicked = () => {\r\n const cookieContainer = document.getElementById('cookieBanner');\r\n if (cookieContainer) {\r\n if (cookieContainer.classList.contains('d-none')) {\r\n cookieContainer.classList.remove('d-none');\r\n } else {\r\n cookieContainer.classList.add('d-none');\r\n }\r\n }\r\n };\r\n const onModalCloseClicked = () => {\r\n // setIsModalOpen(false);\r\n if (props.onManageCookiesModalClose) {\r\n props.onManageCookiesModalClose();\r\n }\r\n };\r\n\r\n const openModal = () => {\r\n // setIsModalOpen(true);\r\n if (props.onManageCookiesClicked) {\r\n props.onManageCookiesClicked();\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {props.isModuleVisible ? (\r\n \r\n \r\n \r\n {text}\r\n
\r\n {\r\n openModal();\r\n }}\r\n >\r\n Manage cookies\r\n \r\n {\r\n if (props.onRejectAll) {\r\n props.onRejectAll();\r\n }\r\n }}\r\n >\r\n Reject all cookies\r\n \r\n {acceptButton}\r\n
\r\n
\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n
\r\n

Manage cookies

\r\n
\r\n
\r\n {\r\n if (props.onRejectAll) {\r\n props.onRejectAll();\r\n }\r\n }}\r\n >\r\n Reject all cookies\r\n \r\n {acceptButton}\r\n
\r\n
\r\n

\r\n A cookie is a small text file that is downloaded on to a computer or smartphone when the user accesses a\r\n website. It allows the website to recognise that user’s device and store some information about the user’s\r\n preferences or past actions.

Our website uses cookies to distinguish you from other\r\n users of our website. This helps us to provide you with a good experience when you browse our website, while\r\n also allowing us to improve our site. You can choose to reject cookies or manage your access below and full\r\n details can be found on our privacy and cookie policy page\r\n

\r\n
\r\n
\r\n

We use the following types of cookies:

\r\n {checkboxes}\r\n
\r\n
\r\n {\r\n if (props.onSaveSettings) {\r\n props.onSaveSettings();\r\n }\r\n }}\r\n >\r\n Save settings\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\nexport default CookieComplianceView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['dobbies-cookie-compliance'] = {\n c: () => require('partner/modules/dobbies-cookie-compliance/dobbies-cookie-compliance.tsx'),\n $type: 'contentModule',\n da: [{name:'showCookieManageModal', path:'actions/show-cookie-dialog-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-cookie-compliance',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-cookie-compliance'\n });\n \n\n {\n const sanitizedActionPath = 'actions/show-cookie-dialog-state';\n let dataAction = require('partner/actions/show-cookie-dialog-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\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-cookie-compliance|dobbies-cookie-compliance'] = {\n c: () => require('partner/modules/dobbies-cookie-compliance/dobbies-cookie-compliance.view.tsx'),\n cn: '__local__-__local__-dobbies-cookie-compliance'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["ShowCookieManageModalInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","async","updateCartStateAction","input","ctx","showCookieManageModal","undefined","createObservableDataAction","action","inputData","CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Object","assign","type","className","onClick","CookieComplianceLinks","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","this","props","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","CheckboxType","CookieCompliance","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","analyticalCookies","functionalCookies","unclassifiedCookies","handleLinkTextChange","linkIndex","event","_this$props$config$ac","config","actionLinks","target","value","handleContentChange","content","openManageCookiesModal","setConsentGivenCookiesCheckboxes","setState","showModal","closeManageCookiesModal","_this$props$context$r","cookieConsentCookie","cookies","get","Array","isArray","newCheckboxesChecked","state","checkboxesChecked","i","rejectAll","getDobbiesAllCookiesNames","cookieNames","key","entries","console","log","removeCookies","getNecessaryCookiesRemovedList","error","setConsentCookie","checkBoxesSelected","checkboxSelection","cookieConsent","set","expires","Date","getTime","visible","_onDismiss","rejectAnalyticsCookies","filter","cn","includes","rejectFunctionalCookies","rejectUnClassifiedCookies","MsDyn365","isBrowser","cookiePairs","document","cookie","split","pair","trim","decodeURIComponent","slice","join","additionalCookiesToBeRemoved","addCookie","onSaveSettings","name","Functional","Analytics","Unclassified","cookieRef","bind","componentDidMount","recentlyViewed","isConsentGiven","deleteConsentCookie","cc","reaction","data","result","_this$props$data$show","handleCheckboxClicked","resources","acceptCookiesAriaLabel","moduleConfig","viewProps","_objectSpread","onDismiss","CookieComplianceBanner","moduleProps","classnames","id","ref","AlertProps","color","fade","Content","text","onEdit","checkboxes","checked","onChange","htmlFor","ArrayExtensions","hasElements","acceptButton","_onAcceptAll","onRejectAll","onManageCookiesClicked","onManageCookiesModalClose","isModuleVisible","renderView","removeCookiesForAllDomains","cookieStr","replace","cookieStr2","cookieStr3","cookieStr4","cookieName","setTime","toUTCString","remove","location","reload","onModalCloseClicked","Module","Alert","onCookieCloseClicked","cookieContainer","getElementById","classList","contains","add","Node","href","Modal","isOpen","toggle","ModalHeader","ModalBody","ModalFooter","binding","modules","dataActions","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","window","__bindings__","viewDictionary","module","exports","ReactDOM"],"sourceRoot":""}