{"version":3,"file":"static/js/23.0ab88b3286e2b3d3d598.chunk.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/modules/element-scroller/element-scroller.tsx?b43b","webpack://msdyn365.commerce.online/./src/modules/instagram-integration/instagram-integration.tsx?8bc9","webpack://msdyn365.commerce.online/./src/modules/instagram-integration/instagram-integration.view.tsx?a143","webpack://msdyn365.commerce.online/./src/modules/product-skutitle/product-skutitle.tsx?9a4d","webpack://msdyn365.commerce.online/./src/modules/smart-sticky-nav/smart-sticky-nav.props.autogenerated.ts?1ab6","webpack://msdyn365.commerce.online/./src/modules/smart-sticky-nav/smart-sticky-nav.tsx?4858","webpack://msdyn365.commerce.online/./src/modules/tasting-notes/tasting-notes.tsx?92d1","webpack://msdyn365.commerce.online/./src/modules/vineyard-map/vineyard-map.data-map.ts?06ad","webpack://msdyn365.commerce.online/./src/modules/vineyard-map/vineyard-map-svg.tsx?60bd","webpack://msdyn365.commerce.online/./src/modules/vineyard-map/vineyard-map-text.tsx?5d72","webpack://msdyn365.commerce.online/./src/modules/vineyard-map/vineyard-map.tsx?e8e7","webpack://msdyn365.commerce.online/./src/themes/emp/emp.tsx?58be","webpack://msdyn365.commerce.online/./src/themes/stemichelle/stemichelle.tsx?56bd","webpack://msdyn365.commerce.online/./src/modules/default-metatags/default-metatags.tsx?97a7","webpack://msdyn365.commerce.online/./src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?605e"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport throttle from 'lodash/throttle';\r\n\r\nimport { IElementScrollerProps, IScrollConfigData } from './element-scroller.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ScrollAnimContainer component\r\n * @extends {React.PureComponent>}\r\n */\r\n\r\nclass ElementScroller extends React.PureComponent> {\r\n\r\n /**\r\n * used to stop events from taking too much processing\r\n */\r\n private _throttledScrollHandler: () => void;\r\n\r\n /**\r\n * used to cache DOM elements to improve performance\r\n */\r\n private _cachedDOMQueries: Map;\r\n\r\n public constructor(props: IElementScrollerProps<{}>) {\r\n super(props);\r\n\r\n this._throttledScrollHandler = throttle(this._scrollHandler.bind(this), 25);\r\n this._isAnyPartOfElementInViewport = this._isAnyPartOfElementInViewport.bind(this);\r\n this._cachedDOMQueries = new Map();\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (process.env.CURRENT_ENVIRONMENT === 'web') {\r\n\r\n window && window.addEventListener &&\r\n window.addEventListener('scroll', this._throttledScrollHandler);\r\n\r\n this._scrollHandler();\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (
);\r\n }\r\n\r\n private _scrollHandler(): void {\r\n // use this method for possible performance benefits\r\n // const isInViewport = this._isAnyPartOfElementInViewport(this._translateTarget);\r\n this._scrollConfig.forEach(scrollConfig => {\r\n const target = this._selectElement(scrollConfig.targetElement);\r\n if (target) {\r\n const translateX = this._calculateTranslateX(scrollConfig);\r\n target.style.transform = `translate(${translateX}%, 0)`;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * function by https://gist.github.com/StokeMasterJack\r\n */\r\n private _isAnyPartOfElementInViewport(el?: Element | null): boolean {\r\n if (!el) { return false; }\r\n\r\n const rect = el.getBoundingClientRect();\r\n // DOMRect { x: 8, y: 8, width: 100, height: 100, top: 8, right: 108, bottom: 108, left: 8 }\r\n const windowHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n const windowWidth = (window.innerWidth || document.documentElement.clientWidth);\r\n\r\n // http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap\r\n const vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0);\r\n const horInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0);\r\n\r\n return (vertInView && horInView);\r\n }\r\n\r\n private _calculateTranslateX(scrollConfig: IScrollConfigData): number | null {\r\n const trigger = this._selectElement(scrollConfig.triggerElement);\r\n const endingTrigger = this._selectElement(scrollConfig.endTriggerElement);\r\n\r\n // if the triggers don't exist, we can't calculate X\r\n if (!trigger || !endingTrigger) { return null; }\r\n\r\n const animationAdjustments = this._getScrollingAdjustments(scrollConfig);\r\n\r\n const triggerPos = trigger.offsetTop;\r\n const endingTriggerPos = endingTrigger.offsetTop;\r\n const clientPos = window.scrollY + window.innerHeight + animationAdjustments.offset;\r\n\r\n // converts the relative position of the clients scroll from the trigger locations to a percent value from [0,1]\r\n const animationPercentCompletion = (clientPos - triggerPos) / (endingTriggerPos - triggerPos);\r\n\r\n // transformation from a percent value to another percent value in a given range from the config\r\n let translateValue = (animationPercentCompletion * scrollConfig.endTranslationValue - animationPercentCompletion * scrollConfig.startTranslationValue) + scrollConfig.startTranslationValue;\r\n\r\n // rate adjuster\r\n translateValue *= animationAdjustments.rate;\r\n this.props.context.telemetry.debug(`[animationPercentCompletion] ${animationPercentCompletion}`);\r\n this.props.context.telemetry.debug(`[finalTranslateValue] ${translateValue}`);\r\n return translateValue;\r\n }\r\n\r\n private _selectElement(selector: string): HTMLElement | null {\r\n if (this._cachedDOMQueries.has(selector)) {\r\n return this._cachedDOMQueries.get(selector)!;\r\n }\r\n const $el = document.querySelector(selector);\r\n if (!$el) { return null; }\r\n this._cachedDOMQueries.set(selector, $el);\r\n return $el;\r\n }\r\n\r\n private _getScrollingAdjustments(config: IScrollConfigData): { rate: number; offset: number } {\r\n const { gridSettings } = this.props.context.request;\r\n const width = window.innerWidth;\r\n if (gridSettings) {\r\n const { lg, md } = gridSettings;\r\n if (md && width < md.w) { return { rate: config.mobileAdjustments.rate, offset: config.mobileAdjustments.offset }; }\r\n if (lg && width < lg.w) { return { rate: config.tabletAdjustments.rate, offset: config.tabletAdjustments.offset }; }\r\n // anything larger is a desktop\r\n return { rate: config.desktopAdjustments.rate, offset: config.desktopAdjustments.offset };\r\n }\r\n // if none were set somehow, default to 1, 0\r\n return {\r\n rate: 1,\r\n offset: 0\r\n };\r\n }\r\n\r\n private get _scrollConfig(): IScrollConfigData[] {\r\n return this.props.config.scrollConfig || [];\r\n\r\n // use this for testing\r\n // return [\r\n // {\r\n // triggerElement: `.ms-content-block__title`,\r\n // endTriggerElement: '.featured-heading-outline .ms-content-block__title',\r\n // targetElement: `.community-image-container`,\r\n // endTranslationValue: -100,\r\n // startTranslationValue: 100,\r\n // translationRate: 1,\r\n // startTriggerOffset: 0\r\n // }\r\n // ];\r\n }\r\n}\r\n\r\nexport default ElementScroller;\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 { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { IInstagramIntegrationData } from './instagram-integration.data';\r\nimport { IInstagramIntegrationProps } from './instagram-integration.props.autogenerated';\r\nexport interface IInstagramIntegrationViewProps extends IInstagramIntegrationProps { }\r\n\r\n/**\r\n *\r\n * InstagramIntegration component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass InstagramIntegration extends React.Component> {\r\n\r\n @observable public _scriptLoaded: boolean = false;\r\n private _scriptSrc: string = 'https://us-display.wayin.com/ui/ngx.embed.min.js';\r\n\r\n public constructor(props: IInstagramIntegrationProps<{}>) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (!this._isScriptLoaded) {\r\n this._injectScript();\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n if (this._scriptLoaded) {\r\n return this.props.renderView(this.props) ||
;\r\n }\r\n return
;\r\n }\r\n\r\n private _injectScript(): void {\r\n const script = document.createElement('script');\r\n\r\n script.onload = () => { this._scriptLoaded = true; };\r\n script.src = 'https://us-display.wayin.com/ui/ngx.embed.min.js';\r\n\r\n document.head.appendChild(script);\r\n }\r\n\r\n private get _isScriptLoaded(): boolean {\r\n return !!document.querySelector(`script[src='${this._scriptSrc}']`);\r\n }\r\n}\r\n\r\nexport default InstagramIntegration;\r\n","/*!\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\nimport { IInstagramIntegrationViewProps } from './instagram-integration';\r\n\r\n/**\r\n * Loads a Wayin script that embeds Instagram images for a configurable API Token\r\n */\r\nexport class InstagramIntegrationView extends React.PureComponent {\r\n\r\n public constructor(props: IInstagramIntegrationViewProps) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return (\r\n // tslint:disable-next-line: react-iframe-missing-sandbox\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default InstagramIntegrationView;","/*---------------------------------------------------------------------------------------------\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 { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport { IProductSkutitleData } from './product-skutitle.data';\r\nimport { IProductSkutitleProps } from './product-skutitle.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ProductSkutitle component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass ProductSkutitle extends React.PureComponent> {\r\n private _productAttributeWineBottleSize: string = 'WINE BOTTLE SIZE';\r\n public render(): JSX.Element | null {\r\n const content: IProductSkutitleData = this.props.data;\r\n if (!(content && content.productSpecificationData && content.productSpecificationData.result)\r\n ) {\r\n return null;\r\n }\r\n const productAttributes = content.productSpecificationData.result;\r\n const productAttribute = productAttributes.filter(\r\n attribute => attribute.Name && attribute.Name.toUpperCase() === this._productAttributeWineBottleSize\r\n );\r\n if (\r\n productAttribute &&\r\n productAttribute.length &&\r\n productAttribute[0].TextValue\r\n ) {\r\n // DG: Removed hard-coded bottle text. Some 14 Hands SKUs are cans.\r\n // In the future, add a mechanism to identify bottles, or just include the bottle text in the back-end.\r\n // const skuTitle = productAttribute[0].TextValue.concat(' bottle');// need to followup for localization\r\n const skuTitle = productAttribute[0].TextValue;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n } else {\r\n const productDetails: SimpleProduct | undefined = content.product && content.product.result;\r\n if (\r\n productDetails &&\r\n productDetails.Name\r\n ) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\nexport default ProductSkutitle;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ISmartStickyNav contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum action {\r\n add = 'add',\r\n remove = 'remove'\r\n}\r\n\r\nexport const enum direction {\r\n up = 'up',\r\n down = 'down'\r\n}\r\n\r\nexport interface ISmartStickyNavConfig extends Msdyn365.IModuleConfig {\r\n targetClass: string;\r\n action: action;\r\n actionClass: string;\r\n direction: direction;\r\n bidirectional?: boolean;\r\n}\r\n\r\nexport interface ISmartStickyNavProps extends Msdyn365.IModule {\r\n config: ISmartStickyNavConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * SMART STICKY NAV\r\n * Applies classes dynamically, based on scroll direction\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport throttle from 'lodash/throttle';\r\nimport * as React from 'react';\r\n\r\nimport { action, direction, ISmartStickyNavProps } from './smart-sticky-nav.props.autogenerated';\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITION\r\n// ==============================================================================\r\n/**\r\n *\r\n * SmartStickyNav component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass SmartStickyNav extends React.PureComponent> {\r\n // Throttled event handler\r\n private _throttledScrollhandler: () => void;\r\n private _lastKnownScrollPosition:number = 0;\r\n\r\n // --------------------------------------------------------------\r\n // Constructor\r\n // --------------------------------------------------------------\r\n constructor(props: ISmartStickyNavProps<{}>) {\r\n super(props);\r\n\r\n // Throttle the event handler to prevent event overloading\r\n this._throttledScrollhandler = throttle(this._scrollHandler.bind(this), 50);\r\n\r\n }\r\n\r\n // --------------------------------------------------------------\r\n // Attach event handler\r\n // --------------------------------------------------------------\r\n public componentDidMount(): void {\r\n if (process.env.CURRENT_ENVIRONMENT === 'web') {\r\n window && window.addEventListener && window.addEventListener('scroll', this._throttledScrollhandler);\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------\r\n // Detach event handler\r\n // --------------------------------------------------------------\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener && window.removeEventListener('scroll', this._throttledScrollhandler);\r\n }\r\n\r\n // --------------------------------------------------------------\r\n // Required, but doesn't do anything\r\n // --------------------------------------------------------------\r\n public render(): null {\r\n return null;\r\n }\r\n\r\n // --------------------------------------------------------------\r\n // Process the action\r\n // --------------------------------------------------------------\r\n private _performAction(targetElement:HTMLCollectionOf, actionFunction:'add' | 'remove'): void {\r\n const { actionClass } = this.props.config;\r\n // Peform the action\r\n for (let index = 0; index < targetElement.length; index++) {\r\n targetElement[index].classList[actionFunction](actionClass);\r\n }\r\n }\r\n\r\n private _scrollHandler(): void {\r\n const { targetClass, bidirectional, direction:scrollDirection, action:selectedAction } = this.props.config;\r\n\r\n // Get the current scroll position\r\n const currentPosition = window.scrollY;\r\n\r\n // Get the target element on DOM\r\n const targetElement = document.getElementsByClassName(targetClass);\r\n\r\n // Determine the appropriate function\r\n const actionFunction = (selectedAction === action.add) ? 'add' : 'remove';\r\n\r\n // Determine the appropriate function used when biderectional is true\r\n const bidirectionalActionFunction = (selectedAction === action.add) ? 'remove' : 'add';\r\n\r\n if (currentPosition > this._lastKnownScrollPosition) {\r\n // The user is Scrolling DOWN\r\n if (scrollDirection === direction.down) {\r\n this._performAction(targetElement, actionFunction);\r\n }\r\n\r\n if (bidirectional && scrollDirection === direction.up) {\r\n this._performAction(targetElement, bidirectionalActionFunction);\r\n }\r\n } else {\r\n // The user is Scrolling UP\r\n if (scrollDirection === direction.up) {\r\n this._performAction(targetElement, actionFunction);\r\n }\r\n\r\n if (bidirectional && scrollDirection === direction.down) {\r\n this._performAction(targetElement, bidirectionalActionFunction);\r\n }\r\n }\r\n\r\n this._lastKnownScrollPosition = currentPosition <= 0 ? 0 : currentPosition;\r\n }\r\n}\r\n\r\nexport default SmartStickyNav;\r\n","import { Image } from '@msdyn365-commerce/core';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport { ITastingNotesData } from './tasting-notes.data';\r\nimport { ITastingNotesProps } from './tasting-notes.props.autogenerated';\r\n\r\n/**\r\n *\r\n * TastingNotes component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass TastingNotes extends React.PureComponent> {\r\n\r\n private tastingNotesAttributeName: string = 'visual tasting notes';\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element | null {\r\n const content: ITastingNotesData = this.props.data;\r\n const productAttributes = content && content.productSpecificationData && content.productSpecificationData.result;\r\n const tastingNotes = productAttributes && productAttributes.find(\r\n attribute => attribute.Name && (attribute.Name.toLowerCase() === this.tastingNotesAttributeName)\r\n );\r\n if (tastingNotes) {\r\n const tastingNotesContent = this._getContent(tastingNotes);\r\n return (\r\n
\r\n {tastingNotesContent}\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _getContent(tastingNotes: AttributeValue | undefined): JSX.Element[] | null {\r\n if (tastingNotes && tastingNotes.TextValue) {\r\n const tastingNotesContent: JSX.Element[] = [];\r\n const tastingNotesList = tastingNotes.TextValue.replace(/\\s/g, '').toLowerCase().split(',');\r\n tastingNotesList.forEach(note => {\r\n tastingNotesContent.push(\r\n
\r\n {this._getImage(note)}\r\n
\r\n );\r\n });\r\n return tastingNotesContent;\r\n }\r\n return null;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _getImage(note: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TastingNotes;\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\n /* tslint:disable:max-line-length */\r\n\r\nexport const dataText = [\r\n {\r\n area: 0,\r\n heading: 'Explore',\r\n text: 'Roll over the vineyard blocks to discover what each varietal component contributes to the final blend of Col Solare.'\r\n },\r\n {\r\n area: 1,\r\n heading: 'Malbec',\r\n text: 'This varietal is prized for its spice notes and deep, rich color.'\r\n },\r\n {\r\n area: 2,\r\n heading: 'Petit Verdot',\r\n text: 'Used in the blend to enhance aromatics, depth, and color.'\r\n },\r\n {\r\n area: 3,\r\n heading: 'Cabernet Sauvignon',\r\n text: 'The base varietal for Col Solare, Cabernet Sauvignon offers power, dark fruit flavors, and structure to the final blend.'\r\n },\r\n {\r\n area: 4,\r\n heading: 'Merlot',\r\n text: 'This fruit-forward varietal contributes complexity and berry flavors.'\r\n },\r\n {\r\n area: 5,\r\n heading: 'Cabernet Franc',\r\n text: 'Offers texture, spice, and complexity.'\r\n },\r\n {\r\n area: 6,\r\n heading: 'Syrah',\r\n text: 'Contributes to the texture, richness, and overall mouthfeel of the final blend.'\r\n },\r\n {\r\n area: 7,\r\n heading: 'Carmenere',\r\n text: 'Rarely planted in Washington state, Carmenere adds spice and complexity when blended with other varietals.'\r\n },\r\n];\r\n\r\nexport const dataSvg = [\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M390.185,2.826L349.474,2.507C349.472,2.713,349.466,2.922,349.466,3.13C349.466,12.431000000000001,350.111,21.581,351.329,30.547L391.71000000000004,24.506C390.73,17.415,390.205,10.18,390.185,2.826Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,430.588,96.527)',\r\n tspan: [\r\n {\r\n content: 'cs 02',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M392.373,27.841L352.021,34.212C353.408,42.861000000000004,355.345,51.32300000000001,357.796,59.569L396.775,46.925000000000004C394.931,40.712,393.457,34.344,392.373,27.841Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.9903,-0.1392,0.1392,0.9903,434.398,123.705)',\r\n tspan: [\r\n {\r\n content: 'cs 06',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M401.337,59.06L394.704,60.943000000000005L393.57300000000004,54.660000000000004L399.08900000000006,53.003C398.69800000000004,51.889,398.29600000000005,50.778999999999996,397.93100000000004,49.651L358.742,61.688C361.894,71.688,365.81,81.349,370.41200000000003,90.60900000000001L406.94100000000003,71.68100000000001C404.888,67.574,403.033,63.358,401.337,59.06Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.9397,-0.342,0.342,0.9397,442.8415,150.13)',\r\n tspan: [\r\n {\r\n content: 'cs 08',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M408.638,74.984L372.55199999999996,94.794C376.79999999999995,102.85499999999999,381.566,110.6,386.82699999999994,117.967L419.26099999999997,92.314C415.365,86.785,411.818,80.997,408.638,74.984Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.866,-0.5,0.5,0.866,455.9065,176.4755)',\r\n tspan: [\r\n {\r\n content: 'cs 10',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M421.644,95.611L389.046,121.01C392.944,126.26,397.089,131.314,401.468,136.151L432.06600000000003,108.23500000000001C428.382,104.212,424.904,99.998,421.644,95.611Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7431,-0.6691,0.6691,0.7431,470.556,195.881)',\r\n tspan: [\r\n {\r\n content: 'cs 21',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M436.515,112.906L407.08099999999996,142.096C408.79799999999994,143.847,410.53999999999996,145.56900000000002,412.31699999999995,147.255L441.36199999999997,117.588C439.714,116.06,438.097,114.501,436.515,112.906Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7193,-0.6947,0.6947,0.7193,484.2215,210.0805)',\r\n tspan: [\r\n {\r\n content: 'cs 21',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 4,\r\n path: {\r\n d: 'M445.099,120.955L416.904,151.458C424.465,158.195,432.53499999999997,164.37199999999999,441.052,169.921L463.75300000000004,134.956C457.191,130.741,450.96,126.057,445.099,120.955Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.6428,-0.766,0.766,0.6428,500.3285,225.438)',\r\n tspan: [\r\n {\r\n content: 'mer 01',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 5,\r\n path: {\r\n d: 'M466.462,136.651L444.308,171.99400000000003C451.996,176.79400000000004,460.02299999999997,181.09600000000003,468.359,184.84200000000004L485.558,146.67200000000003C478.943,143.752,472.568,140.403,466.462,136.651Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.4226,-0.9063,0.9063,0.4226,524.933,240.7465)',\r\n tspan: [\r\n {\r\n content: 'cf 04',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 1,\r\n path: {\r\n d: 'M322.396,0.375H10.939L10.001,48.628H328.231C324.81,33.107,322.785,16.972,322.396,0.375Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,229.116,104.5015)',\r\n tspan: [\r\n {\r\n content: 'Malbec, clone 09',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: '1.87 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M198.8,60.5L20.5,60.5L9.7,65.7L8.3,135L7.8,161.3L264.5,60.5L198.8,60.5Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,143,172)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 191',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '1.62 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M7.176,193.863L332.388,64.8C331.91499999999996,63.183,331.43899999999996,61.57,330.99699999999996,59.937999999999995H264.47399999999993L7.818,160.792L7.176,193.863Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.9272,-0.3746,0.3746,0.9272,210,200)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon, clone 08, 1.19 acres',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M217.617,314.149L382.39,155.071C362.378,132.923,346.46999999999997,106.148,336.078,76.292L121.71399999999997,161.661C143.419,218.865,176.256,270.584,217.617,314.149Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,312.052,275.2205)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 21',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '3.96 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M387.826,160.86L222.941,319.635C241.082,338.114,260.785,355.053,281.825,370.253C307.122,347.921,423.87,233.076,451.93399999999997,205.42999999999998C428.041,195.124,406.343,179.895,387.826,160.86Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7193,-0.6947,0.6947,0.7193,397.4375,345.5565)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 08',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '2.34 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 5,\r\n path: {\r\n d: 'M461.691,209.322C458.402,208.117,455.15,206.814,451.93499999999995,205.428C423.8709999999999,233.074,307.121,347.91999999999996,281.8259999999999,370.254C294.5799999999999,379.464,307.82499999999993,388.04,321.5199999999999,395.923L424.6669999999999,296.51099999999997L461.691,209.322Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7071,-0.7071,0.7071,0.7071,424,400)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Franc',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: 'clone 04a, 1.04 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 7,\r\n path: {\r\n d: 'M489.703,292.532L489.703,315.15M458.414,346.81L458.414,314.774M458.414,314.774L533.81,314.774M436.925,280.847V351.342H480.466C480.466,351.342,470.476,350.587,467.083,342.483C467.083,342.483,455.77200000000005,343.802,451.43800000000005,336.64C447.10200000000003,329.477,442.391,327.404,442.391,327.404L440.88300000000004,321.561C440.88300000000004,321.561,439.37500000000006,316.65999999999997,443.14500000000004,311.572C446.915,306.482,445.78400000000005,303.843,445.78400000000005,303.843L447.85600000000005,301.77000000000004C447.85600000000005,301.77000000000004,444.84000000000003,299.69700000000006,447.66700000000003,290.83700000000005C450.495,281.98,450.11800000000005,284.24000000000007,449.93100000000004,280.65900000000005L436.925,280.847ZM540.972,274.438V340.033H522.5L519.107,334.567V326.463L511.00199999999995,329.28900000000004L509.68199999999996,324.76700000000005L511.94599999999997,320.2420000000001C511.94599999999997,320.2420000000001,528.3439999999999,317.0390000000001,525.8929999999999,295.7390000000001C525.892,295.737,538.898,290.647,540.972,274.438Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,548.9485,355)',\r\n tspan: [\r\n {\r\n content: 'Carmenere',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: '0.49 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 5,\r\n path: {\r\n d: 'M523.5,372.5L521.7,544.4L552.3,544.5L554.5,373C552,373.1,549.5,373.1,547,373.1C539.1,373.1,531.3,373,523.5,372.5L523.5,372.5Z'\r\n },\r\n text: {\r\n transform: 'matrix(0,-1,1,0,597,538.5)',\r\n tspan: [\r\n {\r\n content: 'Cab Franc',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: 'clone 214, 0.52 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 6,\r\n path: {\r\n d: 'M502.2,370.6C505.9,371,509.7,371.4,513.4,371.8L513.4,371.8C516.7,372.1,520,372.3,523.4,372.6L523.4,372.6L521.6,544.6L510.2,544.6L500.7,544.6L502.2,370.6'\r\n },\r\n text: {\r\n transform: 'matrix(0,-1,1,0,572.05,537.6)',\r\n tspan: [\r\n {\r\n content: 'Syrah, clone 77, 0.381 acres',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 6,\r\n path: {\r\n d: 'M502.2,370.5L500.7,544.4L467.9,544.3L471.3,365.6C481.5,367.6,491.8,369.3,502.2,370.5'\r\n },\r\n text: {\r\n transform: 'matrix(0,-1,1,0,544,535)',\r\n tspan: [\r\n {\r\n content: 'Syrah',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: 'clone 525, 0.92 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 5,\r\n path: {\r\n d: 'M376.785,543.263L455.894,543.587L459.343,362.206C457.69100000000003,361.809,456.036,361.41400000000004,454.392,360.995L376.785,543.263Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.3746,-0.9272,0.9272,0.3746,484,565)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Franc',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: 'clone 04b, 0.98 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M414.269,348.308L330.89,543.076L376.78499999999997,543.263L454.39199999999994,360.995C440.701,357.503,427.31,353.262,414.269,348.308Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.3907,-0.9205,0.9205,0.3907,452.641,525.7855)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-2.8515625'\r\n },\r\n {\r\n content: 'clone 08, 1.06 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 4,\r\n path: {\r\n d: 'M367.277,431.665C359.24199999999996,428.338,351.334,424.771,343.53499999999997,421.016L215.623,543.812L319.53499999999997,544.095L367.277,431.665ZM371.849,420.896L391.247,375.21000000000004L352.653,412.261C358.976,415.277,365.371,418.166,371.849,420.896Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7071,-0.7071,0.7071,0.7071,363.435,565)',\r\n tspan: [\r\n {\r\n content: 'Merlot, clone 15, 1.15 acres',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 4,\r\n path: {\r\n d: 'M312.501,404.615L168.211,543.682L215.62300000000002,543.812L343.535,421.016C332.96,415.928,322.613,410.456,312.501,404.615ZM391.248,375.21L424.668,296.514L321.52,395.923C331.656,401.758,342.044,407.204,352.654,412.261L391.248,375.21Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7193,-0.6947,0.6947,0.7193,320,557)',\r\n tspan: [\r\n {\r\n content: 'Merlot, clone 01, 1.1 acres',\r\n dy: '3.75'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M213.784,328.451L0.568,533.769L0.38199999999999995,543.224L168.21,543.682L312.501,404.616C276.244,383.668,243.049,358.016,213.784,328.451Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,250,516.0665)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 02',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '3.86 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M208.455,322.995C188.89600000000002,302.586,171.20100000000002,280.385,155.579,256.697L3.098,403.555L0.767,523.503L208.455,322.995Z'\r\n },\r\n text: {\r\n transform: 'matrix(0.7193,-0.6947,0.6947,0.7193,164.611,450)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 10',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '2.6 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n area: 3,\r\n path: {\r\n d: 'M109.286,166.611L6.914,207.381L3.099,403.553L155.57899999999998,256.697C137.066,228.629,121.475,198.466,109.286,166.611Z'\r\n },\r\n text: {\r\n transform: 'matrix(1,0,0,1,130,330)',\r\n tspan: [\r\n {\r\n content: 'Cabernet Sauvignon',\r\n dy: '-9.453125'\r\n },\r\n {\r\n content: 'clone 06',\r\n dy: '13.2',\r\n x: '0'\r\n },\r\n {\r\n content: '2.52 acres',\r\n dy: '13.2',\r\n x: '0'\r\n }\r\n ]\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\nimport { dataSvg } from './vineyard-map.data-map';\r\n\r\n// =============================================================================\r\n// INTERFACES\r\n// =============================================================================\r\n\r\ninterface IVineyardMapSvgProps {\r\n toggle(area: number): undefined;\r\n assignActiveSvg(area: number): string;\r\n}\r\n\r\ninterface IDataSvg {\r\n area: number;\r\n path: {\r\n d: string;\r\n };\r\n text: {\r\n transform: string;\r\n tspan: {\r\n content: string;\r\n dy: string;\r\n x?: string;\r\n }[];\r\n };\r\n}\r\n\r\n/**\r\n *\r\n * VineyardMapSvg component: Renders vineyard areas from SVG map data and\r\n * toggles currently active vineyard area\r\n * @extends {React.Component}\r\n */\r\n\r\nclass VineyardMapSvg extends React.Component {\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n {\r\n // obtains SVG map data\r\n // renders each in \r\n // clicking each toggles active vineyard area\r\n dataSvg.map((shape: IDataSvg, shapeKey: number) => {\r\n return (\r\n this.props.toggle(shape.area)}\r\n key={shapeKey}\r\n >\r\n \r\n \r\n {\r\n // renders each in \r\n shape.text.tspan.map((tspan, textKey: number) => {\r\n return (\r\n \r\n {tspan.content}\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default VineyardMapSvg;\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 { ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { dataText } from './vineyard-map.data-map';\r\nimport { IVineyardMapConfig } from './vineyard-map.props.autogenerated';\r\n\r\n// =============================================================================\r\n// INTERFACES\r\n// =============================================================================\r\n\r\ninterface IVineyardMapTextProps {\r\n activeArea: number;\r\n config: IVineyardMapConfig;\r\n context: ICoreContext;\r\n}\r\n\r\ninterface IDataText {\r\n area: number;\r\n heading: string;\r\n text: string;\r\n}\r\n\r\n/**\r\n *\r\n * VineyardMapText component: Renders the name and corresponding description of\r\n * the currently active vineyard area\r\n * @extends {React.Component}\r\n */\r\n\r\nclass VineyardMapText extends React.Component {\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public render(): JSX.Element {\r\n const config = this.props.config;\r\n const lazyloadConfig: boolean | undefined = (config && config.lazyload) || false;\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=148&h=174&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=148&h=174&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: lazyloadConfig\r\n };\r\n\r\n return (\r\n
\r\n {\r\n config.logoImage && (\r\n
\r\n \r\n
\r\n )\r\n }\r\n {\r\n config.headerImage && (\r\n
\r\n \r\n
\r\n )\r\n }\r\n
\r\n

\r\n {this._renderActiveText().heading}\r\n

\r\n

\r\n {this._renderActiveText().text}\r\n

\r\n
\r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n /**\r\n * obtains data of active vineyard area to render text, returns an object\r\n */\r\n private _renderActiveText(): IDataText {\r\n return dataText.find((shape: IDataText) => shape.area === this.props.activeArea) as IDataText;\r\n }\r\n}\r\n\r\nexport default VineyardMapText;\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 { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport VineyardMapSvg from './vineyard-map-svg';\r\nimport VineyardMapText from './vineyard-map-text';\r\nimport { IVineyardMapData } from './vineyard-map.data';\r\nimport { IVineyardMapProps } from './vineyard-map.props.autogenerated';\r\n\r\n/**\r\n *\r\n * VineyardMap component: Renders interactive map displaying different vineyard\r\n * areas that can be clicked to show corresponding information\r\n * @extends {React.Component>}\r\n */\r\n\r\n@observer\r\nclass VineyardMap extends React.Component> {\r\n\r\n // =========================================================================\r\n // OBSERVABLES\r\n // =========================================================================\r\n\r\n /**\r\n * tracks current active vineyard area\r\n */\r\n @observable private activeArea: number = 0;\r\n\r\n /**\r\n * toggle auto advance active area functionality\r\n */\r\n private advance: boolean = true;\r\n\r\n /**\r\n * time in milliseconds for auto advance active area\r\n */\r\n private timer: number = 10000;\r\n\r\n /**\r\n * stores interval from auto advance set interval function\r\n */\r\n private interval: number = 0;\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public constructor(props: IVineyardMapProps) {\r\n super(props);\r\n this._toggle = this._toggle.bind(this);\r\n this._autoAdvance = this._autoAdvance.bind(this);\r\n this._assignActiveSvg = this._assignActiveSvg.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.advance\r\n ? this.interval = window.setInterval(this._autoAdvance, this.timer)\r\n : null;\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n this.advance\r\n ? window.clearInterval(this.interval)\r\n : null;\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n /**\r\n * toggles active vineyard area clicked by the user, returns undefined\r\n */\r\n private _toggle(area: number): undefined {\r\n this.activeArea = area;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * auto advances active vineyard area until back at 1, returns undefined\r\n */\r\n private _autoAdvance(): undefined {\r\n if (this.activeArea === 7) {\r\n this.activeArea = 1;\r\n window.clearInterval(this.interval);\r\n } else {\r\n this.activeArea = this.activeArea + 1;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * assigns a CSS class to active vineyard area, returns a string\r\n */\r\n private _assignActiveSvg(area: number): string {\r\n if (area !== 7) {\r\n return this.activeArea === area\r\n ? 'vineyard-map-area-active'\r\n : '';\r\n } else {\r\n return this.activeArea === area\r\n ? 'vineyard-map-area-active vineyard-map-area-exception'\r\n : 'vineyard-map-area-exception';\r\n }\r\n }\r\n}\r\n\r\nexport default VineyardMap;\r\n","/*!\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