{"version":3,"file":"static/js/18.47ebe974fd4ccbf38bfb.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/baseComponents/button/button.tsx?a0e8","webpack://Msdyn365.Commerce.Online/./src/baseComponents/image-overlay/image-overlay.tsx?11da","webpack://Msdyn365.Commerce.Online/./src/baseComponents/parallax-wrapper/parallax-wrapper.tsx?e8fc","webpack://Msdyn365.Commerce.Online/./src/baseComponents/portal-modal/portal-modal.tsx?8d10","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/detail-images.tsx?b5a2","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/shaper.tsx?7938","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/spec-table.tsx?1acb","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/wakeboard-flex-number.tsx?4fe3","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/wakeboard-specs.tsx?d00d","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/fatsac-colors.tsx?6d95","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/fatsac-specs.tsx?b33a","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/specs.tsx?bb58","webpack://Msdyn365.Commerce.Online/./src/baseComponents/product-detail/tech-features.tsx?3e77","webpack://Msdyn365.Commerce.Online/./src/baseComponents/scroll-fade/scroll-fade.tsx?9b63","webpack://Msdyn365.Commerce.Online/./src/baseComponents/video-box/video-box.tsx?763f","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-custom-product/hosports-custom-product.tsx?110f","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-custom-product/hosports-custom-product.view.tsx?68fa","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-parallax-full-width-image/hosports-parallax-full-width-image.tsx?8077","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-parallax-full-width-image/hosports-parallax-full-width-image.view.tsx?8777","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-parallax-two-image-overlapping-loose-grid/hosports-parallax-two-image-overlapping-loose-grid.tsx?b4fc","webpack://Msdyn365.Commerce.Online/./src/modules/hosports-parallax-two-image-overlapping-loose-grid/hosports-parallax-two-image-overlapping-loose-grid.view.tsx?30e0","webpack://Msdyn365.Commerce.Online/./src/baseComponents/custom-product/custom-product.tsx?43b4","webpack://Msdyn365.Commerce.Online/./src/themes/kent/views/hosports-custom-product.view.tsx?335b","webpack://Msdyn365.Commerce.Online/./src/themes/kent/views/hosports-parallax-full-width-image.view.tsx?12c1","webpack://Msdyn365.Commerce.Online/./src/themes/kent/views/hosports-parallax-two-image-overlapping-loose-grid.view.tsx?1aa1","webpack://Msdyn365.Commerce.Online/./src/themes/kent/utilities/functions.js?b879"],"sourcesContent":["import React from 'react';\r\n\r\n/**\r\n *\r\n * Scroll Fade In component\r\n * @extends {React.Component}\r\n */\r\ninterface IProps {\r\n text?: string;\r\n backgroundColor?:string;\r\n color?:string;\r\n outline?:string;\r\n ignoreAnimation?:any;\r\n href?:string;\r\n target?:string;\r\n className?:string;\r\n}\r\n\r\nclass Button extends React.Component{\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n }\r\n public render(): JSX.Element {\r\n let styles = {};\r\n let classList = \"base-button\";\r\n if(this.props.className){\r\n classList = classList+\" \"+this.props.className\r\n }\r\n let text = \"\";\r\n if(this.props.text){\r\n text = this.props.text;\r\n }\r\n if(this.props.backgroundColor){\r\n styles['backgroundColor'] = this.props.backgroundColor;\r\n } else{\r\n classList = classList+\" primary-color-background white\";\r\n }\r\n if(this.props.color){\r\n styles['color'] = this.props.color;\r\n }\r\n if(this.props.outline){\r\n classList = classList+\" outline\";\r\n }\r\n if(!this.props.ignoreAnimation){\r\n classList = classList+\" animated\";\r\n }\r\n let button =
{text}
;\r\n return (\r\n this.props.href ?\r\n {button}\r\n :\r\n button\r\n );\r\n }\r\n}\r\n\r\n export default Button;\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\n\r\nimport React from 'react';\r\n\r\n//@ts-ignore\r\nimport PortalModal from './../portal-modal/./portal-modal';\r\ninterface IProps {\r\n image?:string;\r\n dismissed?:any;\r\n active?:boolean;\r\n}\r\n\r\ninterface IState {\r\n onFullScreenImageLoaded:boolean;\r\n}\r\n\r\n/**\r\n *\r\n * @extends {React.Component}\r\n */\r\n\r\nclass HosportsImageOverlay extends React.Component {\r\n\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n onFullScreenImageLoaded:false,\r\n };\r\n }\r\n\r\n public onFullScreenImageLoad = () => {\r\n this.setState({\r\n onFullScreenImageLoaded:true\r\n })\r\n }\r\n\r\n public render(): JSX.Element {\r\n let fullScreenImageLoadedClass:string = \"\";\r\n if(this.state.onFullScreenImageLoaded){\r\n fullScreenImageLoadedClass = \"loaded\"\r\n }\r\n return (\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 HosportsImageOverlay;\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 React from 'react';\r\n\r\n// @ts-ignore\r\nimport {MobileBreakpoint, ParallaxValueFast, ParallaxValueSlow} from '../../themes/kent/utilities/constants';\r\n// @ts-ignore\r\nimport { ParallaxProvider,Parallax } from 'react-scroll-parallax';\r\n\r\n/**\r\n *\r\n * Parallax Wrapper component\r\n * @extends {React.Component}\r\n */\r\nclass ParallaxWrapper extends React.Component {\r\n\r\n public render(): JSX.Element {\r\n let ParallaxValue = window.outerWidth < MobileBreakpoint ? ParallaxValueFast : ParallaxValueSlow;\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ParallaxWrapper;\r\n","import React from 'react';\r\n\r\nimport ReactDOM from \"react-dom\";\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from '../../themes/kent/utilities/constants';\r\n/**\r\n *\r\n * Portal Modal component\r\n * @extends {React.Component}\r\n */\r\ninterface IProps {\r\n positionType?: string;\r\n theme?:string;\r\n content?:any;\r\n hideCloseButton?:boolean;\r\n modalActive?:boolean;\r\n frame?:boolean;\r\n modalHidden?:any;\r\n extraClass?:any;\r\n}\r\n\r\ninterface IState {\r\n modalActive:boolean;\r\n\thideModal:boolean;\r\n modalId?:any;\r\n}\r\n\r\nclass PortalModal extends React.Component{\r\n\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = ({\r\n modalActive:false,\r\n hideModal:false\r\n })\r\n }\r\n\r\n\tpublic componentDidMount = () =>{\r\n \tif(this.props.modalActive){\r\n\t\t\tthis.setupModal()\r\n\t\t}\r\n\t}\r\n componentDidUpdate = ()=>{\r\n if(this.props.modalActive && !this.state.modalActive){\r\n\t\t\tthis.setupModal()\r\n\t\t}\r\n }\r\n setupModal = ()=>{\r\n let modalId = Math.floor(Math.random() * 1000);\r\n let elem = document.createElement('div');\r\n elem.setAttribute('id',\"modal-root-\"+modalId);\r\n document.body.appendChild(elem);\r\n this.setState({\r\n modalActive:true,\r\n modalId:modalId\r\n })\r\n }\r\n\tpublic hideModal = () =>{\r\n\t\tthis.setState({\r\n\t\t\thideModal:true\r\n\t\t})\r\n\t\tsetTimeout(() => {\r\n if(this.props.modalHidden){\r\n this.props.modalHidden()\r\n }\r\n\t\t\tthis.setState({\r\n\t\t\t\tmodalActive:false,\r\n\t\t\t\thideModal:false\r\n\t\t\t})\r\n\t\t},500)\r\n\t}\r\n\tpublic render(): JSX.Element {\r\n\t\tconst {frame, theme,positionType,content,hideCloseButton} = this.props;\r\n\t\tlet position:any = \"fixed\";\r\n\t\tif(positionType == \"absolute\"){\r\n\t\t\tposition = \"absolute\";\r\n\t\t}\r\n\t\tlet animateOut:any = \"\";\r\n\t\tif(this.state.hideModal){\r\n\t\t\tanimateOut = \"animate-out\"\r\n\t\t}\r\n\r\n\t\tlet closeImage:any = GeneralAssetUrl+\"close-white.png\";\r\n\t\tlet componentTheme:any = \"dark-theme\";\r\n\t\tif(theme == \"light\"){\r\n\t\t\tcloseImage = GeneralAssetUrl+\"close-black.png\";\r\n\t\t\tcomponentTheme = \"light-theme\";\r\n\t\t}\r\n let extraClass:any = this.props.extraClass ? this.props.extraClass : \"\";\r\n\r\n\t\tif(!this.state.modalActive) return \r\n let portal:any = document.getElementById('modal-root-'+this.state.modalId);\r\n return ReactDOM.createPortal(\r\n\t\t\t
\r\n \t\t\t
\r\n\t\t\t \t {!hideCloseButton && }\r\n {frame ?
: content}\r\n \t\t\t
\r\n \t\t
,\r\n\t\t portal\r\n\t );\r\n\t}\r\n}\r\n\r\n\r\nexport default PortalModal;\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\n\r\nimport React from 'react';\r\n// @ts-ignore\r\nimport {ParseCategoryIds} from \"./../../themes/kent/utilities/constants\";\r\n// @ts-ignore\r\nimport {GetExternalProductId,GetExternalProductInfo,GenerateProductAssetUrl,DoesProductShowDetailImages} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport PortalModal from './../portal-modal/./portal-modal';\r\n// @ts-ignore\r\nimport ImageOverlay from './../image-overlay/./image-overlay';\r\n\r\ninterface IState {\r\n ready:any;\r\n images:any;\r\n isOpen:any;\r\n fullScreenImageIndex:any;\r\n shown?: any;\r\n}\r\n\r\ninterface IProps {\r\n product?: any;\r\n parentProduct?:any;\r\n year?:any;\r\n category?:any;\r\n subcategory?:any;\r\n}\r\n\r\nlet imagesLoaded =[];\r\n\r\n/**\r\n *\r\n * Hero component\r\n * @extends {React.Component}\r\n */\r\nclass HosportsProductDetailImageRow extends React.Component {\r\n\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ready:false,\r\n images:[],\r\n isOpen:false,\r\n fullScreenImageIndex:null\r\n };\r\n }\r\n\r\n public componentDidMount = async () => {\r\n let product = this.props.product;\r\n if(product){\r\n let shown = await DoesProductShowDetailImages(this.props.product,this.props.category,this.props.subcategory)\r\n if(shown){\r\n this.fillModule(product)\r\n }\r\n }\r\n }\r\n\r\n public fillModule = async(product:any) =>{\r\n let images = [];\r\n if(product){\r\n if(product.attributes){\r\n let targetProduct = product;\r\n let prodAssetUrl:string = GenerateProductAssetUrl(this.props.year);\r\n if(this.props.parentProduct){\r\n targetProduct = this.props.parentProduct;\r\n }\r\n\r\n for (var i = 1; i < 4; i++) {\r\n images.push(prodAssetUrl+targetProduct.attributes.slug+'-detail'+i+'.jpg')\r\n }\r\n this.setState({\r\n shown:true,\r\n images:images\r\n })\r\n }\r\n }\r\n }\r\n\r\n public imageError =(index:any) =>{\r\n let images = this.state.images;\r\n images.splice(index,1);\r\n if(images.length == 1){\r\n this.setState({\r\n images:null\r\n })\r\n } else{\r\n this.setState({\r\n images:images\r\n })\r\n }\r\n }\r\n\r\n public imageLoaded =(index:any) =>{\r\n let images = this.state.images;\r\n imagesLoaded.push(index);\r\n if(images.length == imagesLoaded.length){\r\n }\r\n }\r\n\r\n public showImage =(index:any) =>{\r\n console.log(index)\r\n this.setState({\r\n isOpen:true,\r\n fullScreenImageIndex:index\r\n })\r\n }\r\n\r\n public hideImage =() =>{\r\n this.setState({\r\n isOpen:false\r\n })\r\n }\r\n\r\n public render(): JSX.Element {\r\n if(!this.state.shown) return ;\r\n return (\r\n
\r\n
\r\n {this.state.images && this.state.images.map((image:string,index:any) =>{\r\n return(\r\n
\r\n
\r\n this.showImage(index)} onError={() => this.imageError(index)} onLoad={() => this.imageLoaded(index)} />\r\n
\r\n {this.state.isOpen &&\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 HosportsProductDetailImageRow;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport {GetLocalText} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport ParallaxWrapper from \"./../parallax-wrapper/./parallax-wrapper\";\r\n//@ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {\r\n product:any;\r\n slug:string;\r\n name:string;\r\n description:string;\r\n}\r\n\r\ninterface IProps {\r\n product?: any;\r\n parentProduct?:any;\r\n}\r\n\r\n/**\r\n *\r\n * HosportsProductShaper component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass HosportsProductShaper extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n product:null,\r\n slug:'',\r\n name:'',\r\n description:''\r\n };\r\n }\r\n public componentDidMount = async () => {\r\n let product:any = this.props.product;\r\n if(this.props.parentProduct){\r\n product = this.props.parentProduct;\r\n }\r\n let slug:any = '';\r\n let name:any = '';\r\n let description = '';\r\n if(product){\r\n if(product.attributes){\r\n if(product.attributes.shaper == \"Greg Nelson\"){\r\n slug = \"gregnelsondesign\",\r\n name = await GetLocalText(\"gregNelsonDesignText\"),\r\n description = await GetLocalText(\"gregNelsonDesignDescription\")\r\n }\r\n if(product.attributes.shaper == \"Aaron Stumpf\"){\r\n slug = \"shapedbyaaron\",\r\n name = await GetLocalText(\"shapedByAaronText\"),\r\n description = await GetLocalText(\"shapedByAaronDescription\")\r\n }\r\n if(product.attributes.shaper == \"Butch\"){\r\n slug = \"butchcustoms\",\r\n name = await GetLocalText(\"butchCustomsText\"),\r\n description = await GetLocalText(\"butchCustomsDescription\")\r\n }\r\n if(product.attributes.shaper == \"Varial Foam Technology\"){\r\n slug = \"varialfoamtechnology\",\r\n name = await GetLocalText(\"varialFoamTechnologyText\"),\r\n description = await GetLocalText(\"varialFoamTechnologyDescription\")\r\n }\r\n if(product.attributes.shaper == \"SUPERBRAND\"){\r\n slug = \"superbrand\",\r\n name = await GetLocalText(\"superBrandText\"),\r\n description = await GetLocalText(\"superBrandDescription\")\r\n }\r\n if(product.attributes.shaper == \"Trever Maur\"){\r\n slug = \"trevermaur\",\r\n name = await GetLocalText(\"shapedByTreverMaurText\"),\r\n description = await GetLocalText(\"treverMaurShaperDescription\")\r\n }\r\n this.setState({\r\n product:product,\r\n slug:slug,\r\n name:name,\r\n description:description\r\n })\r\n }\r\n }\r\n }\r\n public render(): JSX.Element {\r\n const {product} = this.state;\r\n if(!product){\r\n return \r\n } else{\r\n if(!product.attributes || !product.attributes.shaper){\r\n return \r\n } else{\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
{this.state.name}
\r\n

{this.state.description}

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default HosportsProductShaper;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport {GetLocalText} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {\r\n products?:any;\r\n}\r\n\r\ninterface IProps {\r\n product?: any;\r\n parentProduct?: any;\r\n}\r\n\r\n/**\r\n *\r\n * SpecTable component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass SpecTable extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n products:null\r\n };\r\n }\r\n public componentDidMount = async () => {\r\n let productSpecs = this.props.product.attributes.productSpecs;\r\n if(this.props.parentProduct){\r\n productSpecs = this.props.product.attributes.productSpecs;\r\n }\r\n this.setState({\r\n products:productSpecs\r\n })\r\n }\r\n\r\n public render(): JSX.Element {\r\n if(!this.state.products || this.state.products.length == 0) return ;\r\n console.log(this.state.products[0])\r\n return (\r\n
\r\n
\r\n

{'Spec Chart'}

\r\n
\r\n {Object.keys(this.state.products[0]).map((data:any,index:any) =>{\r\n if(data == 'slug') return null;\r\n let title = data;\r\n return(\r\n
\r\n
\r\n {title}\r\n
\r\n {this.state.products.map((product:any,index:any) =>{\r\n return(\r\n
{product[data]}
\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 SpecTable;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport {GetLocalText} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport {ModelYear, GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {}\r\n\r\ninterface IProps {\r\n product?: any;\r\n}\r\n\r\n/**\r\n *\r\n * Sizes component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass WakeboardFlexNumber extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public render(): JSX.Element {\r\n let image = GeneralAssetUrl+\"flex-meter-1.png\";\r\n\t\tif(this.props.product.attributes.wakeboardFlexNumber == 2){\r\n\t\t\timage = GeneralAssetUrl+\"flex-meter-2.png\";\r\n\t\t}\r\n\t\tif(this.props.product.attributes.wakeboardFlexNumber == 3){\r\n\t\t\timage = GeneralAssetUrl+\"flex-meter-3.png\";\r\n\t\t}\r\n\t\tif(this.props.product.attributes.wakeboardFlexNumber == 4){\r\n\t\t\timage = GeneralAssetUrl+\"flex-meter-4.png\";\r\n\t\t}\r\n\t\tif(this.props.product.attributes.wakeboardFlexNumber == 5){\r\n\t\t\timage = GeneralAssetUrl+\"flex-meter-5.png\";\r\n\t\t}\r\n\t\tif(!this.props.product.attributes.wakeboardFlexNumber) return ;\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n }\r\n}\r\n\r\nexport default WakeboardFlexNumber;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport WakeboardFlexNumber from \"./wakeboard-flex-number\";\r\n\r\n// @ts-ignore\r\nimport {GetLocalText} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {\r\n specs?: any;\r\n}\r\n\r\ninterface IProps {\r\n product?: any;\r\n year?:any;\r\n forceBrandColor?:any;\r\n}\r\n\r\n/**\r\n *\r\n * WakeboardSpecs component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass WakeboardSpecs extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public componentDidMount = async () => {\r\n this.setUpScreen();\r\n }\r\n\r\n public setUpScreen = () =>{\r\n\t\tvar skill = this.props.product.attributes.wakeboardSkill;\r\n\t\tvar pop = this.props.product.attributes.wakeboardPopRocker;\r\n\t\tvar flex = this.props.product.attributes.wakeboardFlex;\r\n\t\tvar terrain = this.props.product.attributes.wakeboardType;\r\n\t\tvar specs = [];\r\n\t\tif(skill){\r\n\t\t\tvar percentage = '0%'\r\n\t\t\tif(skill.includes('advanced')){\r\n\t\t\t\tpercentage = \"80%\";\r\n\t\t\t} else if(skill.includes('intermediate')){\r\n\t\t\t\tpercentage = \"50%\";\r\n\t\t\t} else{\r\n\t\t\t\t percentage = '20%'\r\n\t\t\t}\r\n\t\t\tspecs.push({\r\n\t\t\t\t\tminValue:'Beginner',\r\n\t\t\t\t\tmaxValue:'Intermediate',\r\n\t\t\t\t\tkey:'Skill Level',\r\n\t\t\t\t\tpercentage:percentage\r\n\t\t\t})\r\n\t\t}\r\n\t\tif(pop){\r\n\t\t\tvar percentage = '0%';\r\n\t\t\tif(pop.includes('boosty')){\r\n\t\t\t\tpercentage = \"80%\";\r\n\t\t\t} else if(pop.includes('mid')){\r\n\t\t\t\tpercentage = \"50%\";\r\n\t\t\t} else{\r\n\t\t\t\t percentage = '20%'\r\n\t\t\t}\r\n\t\t\tspecs.push({\r\n\t\t\t\tminValue:'Consistent',\r\n\t\t\t\tmaxValue:'Boosty',\r\n\t\t\t\tkey:'Pop',\r\n\t\t\t\tpercentage:percentage\r\n\t\t\t})\r\n\t\t}\r\n\t\tif(flex){\r\n\t\t\tvar percentage = '0%';\r\n\t\t\tif(flex.includes('flexy')){\r\n\t\t\t\tpercentage = \"80%\";\r\n\t\t\t}else{\r\n\t\t\t\t percentage = '20%'\r\n\t\t\t}\r\n\t\t\tspecs.push({\r\n\t\t\t\tminValue:'Mid Flex',\r\n\t\t\t\tmaxValue:'Flexy',\r\n\t\t\t\tkey:'Board Flex',\r\n\t\t\t\tpercentage:percentage\r\n\t\t\t})\r\n\t\t}\r\n\t\tif(terrain){\r\n\t\t\tvar percentage = '0%';\r\n\t\t\tif(terrain.includes('boat')){\r\n\t\t\t\tpercentage = \"80%\";\r\n\t\t\t}else{\r\n\t\t\t\t percentage = '20%'\r\n\t\t\t}\r\n\t\t\tspecs.push({\r\n\t\t\t\tminValue:'Cable',\r\n\t\t\t\tmaxValue:'Boat',\r\n\t\t\t\tkey:'Terrain',\r\n\t\t\t\tpercentage:percentage\r\n\t\t\t})\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tspecs:specs\r\n\t\t})\r\n\t}\r\n\r\n public render(): JSX.Element {\r\n\t\tif(!this.state.specs) return ;\r\n let customColor:any = null;\r\n if(this.props.product){\r\n if(this.props.product.attributes.customSpecsColor){\r\n if(!this.props.forceBrandColor){\r\n customColor = this.props.product.attributes.customSpecsColor;\r\n }\r\n }\r\n }\r\n\t\treturn (\r\n\t\t\t
\r\n \r\n\t\t\t\t
\r\n\t\t\t\t\t{this.state.specs.map((item:any)=>{\r\n\t\t\t\t\t\treturn(\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

{item.key}

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t

{item.minValue}

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t

{item.maxValue}

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t})}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t)\r\n }\r\n}\r\n\r\nexport default WakeboardSpecs;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\n// @ts-ignore\r\ninterface IProps {\r\n product?: any;\r\n}\r\n\r\nclass FatsacColors extends React.Component {\r\n\r\n public render(): JSX.Element {\r\n return(\r\n
\r\n
\r\n

{'AVAILABLE COLOR OPTIONS:'}

\r\n

{'**Gray and Black are standard colors. Other colors are available for an extra custom color fee.'}

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

{'Grey'}

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

{'Black'}

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

{'Red'}

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

{'White'}

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

{'Camo'}

\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default FatsacColors;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport FatsacColors from \"./fatsac-colors\";\r\n\r\n// @ts-ignore\r\nimport {GenerateProductAssetUrl} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {\r\n fatsacProductWeight?: any;\r\n fatsacSizes?: any;\r\n fatsacImage?: any;\r\n}\r\n\r\ninterface IProps {\r\n product?: any;\r\n year?: any;\r\n}\r\n\r\n/**\r\n *\r\n * WakeboardSpecs component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass FatsacSpecs extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public componentDidMount = async () => {\r\n if(this.props.product){\r\n this.setUpScreen(this.props.product);\r\n }\r\n }\r\n\r\n public setUpScreen = async(product:any) =>{\r\n let prodAssetUrl:any = await GenerateProductAssetUrl(product,this.props.year);\r\n if(product.attributes){\r\n if(product.attributes.subcategory == \"g7lQZjE06q\"){\r\n \t\t\tlet descriptions:any =[\"Length in Inches\",\"Height in Inches\",\"Width in Inches\"]\r\n \t\t\tlet fatsacSizes:any = [];\r\n \t\t\tlet sizes:any = null;\r\n \t\t\tif(product.attributes.sizes){\r\n \t\t\t\tsizes = product.attributes.sizes[0].split(',');\r\n \t\t\t}\r\n \t\t\tvar productImage:any = prodAssetUrl+product.attributes.slug+'1.png';\r\n \t\t\tvar fatsacProductWeight:any = product.attributes.fatsacProductWeight;\r\n \t\t\tsizes.map((size:any,index:any) =>{\r\n \t\t\t\tfatsacSizes.push({\r\n \t\t\t\t\t'size':size,\r\n \t\t\t\t\t'description':descriptions[index]\r\n \t\t\t\t})\r\n \t\t\t\tif(index == sizes.length -1){\r\n \t\t\t\t\tthis.setState({\r\n \t\t\t\t\t\tfatsacProductWeight:fatsacProductWeight,\r\n \t\t\t\t\t\tfatsacSizes:fatsacSizes,\r\n \t\t\t\t\t\tfatsacImage: productImage\r\n \t\t\t\t\t})\r\n \t\t\t\t}\r\n \t\t\t})\r\n \t\t}\r\n }\r\n\t}\r\n\r\n public render(): JSX.Element {\r\n\t\tif(!this.state.fatsacSizes) return ;\r\n\t\treturn (\r\n
\r\n\t\t\t\t
\r\n\t\t\t\t\t{this.state.fatsacProductWeight &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t

{this.state.fatsacProductWeight}

\r\n\t\t\t\t\t\t\t\t\t\t

{'Total ballast weight at recomended capacity'}

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{this.state.fatsacSizes &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t

{'Dimensions'}

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t{this.state.fatsacSizes.map((size:any,index:any) =>{\r\n\t\t\t\t\t\t\t\t\t\t\treturn(\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

{size.size}

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

{size.description}

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n
\r\n
\r\n {this.props.product && }\r\n
\r\n
\r\n\t\t\t
\r\n\t\t)\r\n }\r\n}\r\n\r\nexport default FatsacSpecs;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport WakeboardSpecs from \"./wakeboard-specs\";\r\n// @ts-ignore\r\nimport FatsacSpecs from \"./fatsac-specs\";\r\n// @ts-ignore\r\nimport {GetLocalText} from \"./../../themes/kent/utilities/functions\";\r\n// @ts-ignore\r\nimport {GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n\r\ninterface IState {}\r\n\r\ninterface IProps {\r\n product?: any;\r\n parentProduct?: any;\r\n year?:any;\r\n forceBrandColor?:any;\r\n}\r\n\r\n/**\r\n *\r\n * Sizes component\r\n * @extends {React.PureComponentReact.Component}\r\n */\r\n\r\nclass Specs extends React.Component {\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n public render(): JSX.Element {\r\n let product = this.props.product;\r\n if(this.props.parentProduct){\r\n product = this.props.parentProduct;\r\n }\r\n return (\r\n
\r\n {this.props.product.attributes.subcategory == \"g7lQZjE06q\" && }\r\n\t\t\t\t{(product.attributes.slug == \"wakesurfers-accelerator\" || product.attributes.slug == \"wakesurfers-raygun\" || product.attributes.slug == \"wakesurfers-trifecta-blank\" || product.attributes.slug == \"wakesurfers-exacta-blank\") &&\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

{'Warranty Not Available'}

\r\n\t\t\t\t\t\t\t

{'Due to the advanced nature of the Varial Surf Program, Warranty is not available.'}

\r\n\t\t\t\t\t\t\t

{'For repair options visit the'} {'Varial Surf Repair Shop'}{'.'}

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t}\r\n\t\t\t\t{product.attributes.category == \"tYeyYbLaJ5\" && }\r\n\t\t\t
\r\n );\r\n }\r\n}\r\n\r\nexport default Specs;\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\n\r\nimport React from 'react';\r\n\r\n// @ts-ignore\r\nimport {ModelYear,ParseCategoryIds,SimpleProductCategories, SimpleProductSubcategories, GeneralAssetUrl} from \"./../../themes/kent/utilities/constants\";\r\n// @ts-ignore\r\nimport {GetFromParseBySlug,FindFromParse,GetFromParse} from \"./../../themes/kent/utilities/parse\";\r\n// @ts-ignore\r\nimport {GenerateProductAssetUrl,GetLocalizedText,GetLocalText,GetExternalProductId,GetExternalProductInfo} from \"./../../themes/kent/utilities/functions\";\r\n\r\ninterface IState {\r\n product:any;\r\n features:any;\r\n forcedOrderFeatures:any;\r\n fullFeatures:any;\r\n singleTitleFeatures:any;\r\n featureDictionary:any;\r\n sectionTitle:any;\r\n brokenImage:any;\r\n featureList:any;\r\n}\r\n\r\n\r\ninterface IProps {\r\n product?: any;\r\n simpleProduct?:any;\r\n parentProduct?:any;\r\n year?:any;\r\n}\r\n\r\n/**\r\n *\r\n * Tech Features component\r\n * @extends {React.Component}\r\n */\r\nclass HosportsProductTechFeatures extends React.Component {\r\n\r\n public state: IState;\r\n\r\n constructor (props: IProps) {\r\n super(props);\r\n this.state = {\r\n product:{},\r\n features:[],\r\n forcedOrderFeatures:[],\r\n fullFeatures:[],\r\n singleTitleFeatures:[],\r\n featureDictionary:{},\r\n sectionTitle:'',\r\n brokenImage:false,\r\n featureList:[]\r\n };\r\n }\r\n\r\n public componentDidMount = async() => {\r\n let product = this.props.product;\r\n if(product){\r\n this.fillModule(product)\r\n }\r\n }\r\n\r\n public fillModule = async(product:any) => {\r\n let tech:any = await GetLocalText('techText')\r\n let details:any = await GetLocalText('detailsText')\r\n if(product){\r\n if(product.attributes){\r\n var featureDictionary ={};\r\n var fullFeatures = [];\r\n var singleTitleFeatures = [];\r\n let featureList =[];\r\n let parentProduct = null;\r\n let forcedOrderFeatures = [];\r\n let features = product.attributes.productFeatures;\r\n if(this.props.parentProduct){\r\n parentProduct = this.props.parentProduct;\r\n features = parentProduct.attributes.productFeatures;\r\n }\r\n let year = ModelYear;\r\n if(this.props.year){\r\n year = this.props.year;\r\n }\r\n let parseClass = 'ProductFeatures'+year;\r\n let results = await FindFromParse(parseClass,[{'method':'containedIn','key':'objectId','value':features},{'method':'ascending','value':'order'}]);\r\n if(results){\r\n for (let index:any = 0; index < results.length; index++) {\r\n let feature = results[index];\r\n featureList.push(feature.id);\r\n var title = GetLocalizedText(feature.attributes.content, \"title\")\r\n var description = GetLocalizedText(feature.attributes.content, \"description\")\r\n featureDictionary[feature.id] = {title:title,description:description};\r\n if(!description){\r\n singleTitleFeatures[index] = feature.id;\r\n } else{\r\n fullFeatures.push(feature.id);\r\n }\r\n }\r\n if(features){\r\n for (let x:any = 0; x < features.length; x++) {\r\n for (let i:any = 0; i < results.length; i++) {\r\n if(features[x] == results[i].id){\r\n forcedOrderFeatures.push(results[i].id)\r\n };\r\n }\r\n if(x == features.length -1){\r\n this.setState({\r\n forcedOrderFeatures:forcedOrderFeatures\r\n })\r\n }\r\n }\r\n }\r\n this.setState({\r\n product:parentProduct ? parentProduct : product,\r\n featureList:featureList,\r\n forcedOrderFeatures:forcedOrderFeatures,\r\n features:features,\r\n fullFeatures:fullFeatures,\r\n singleTitleFeatures:singleTitleFeatures,\r\n featureDictionary:featureDictionary,\r\n sectionTitle:tech+' '+details\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n public fixBrokenImage = () => {\r\n this.setState({\r\n brokenImage:true\r\n })\r\n }\r\n\r\n public onImageLoad = () =>{\r\n //do nothing\r\n }\r\n\r\n public render(): JSX.Element {\r\n let product = this.state.product;\r\n let prodAssetUrl:string = GenerateProductAssetUrl(this.props.year);\r\n if (product && product.attributes){\r\n var dictionary = this.state.featureDictionary;\r\n var productColumn = 6;\r\n var featureColumn = 12;\r\n var featuresColumn = 4;\r\n var featuresColumnStyles = 'wide-features-padding';\r\n var featureColumnStyles = 'wide-feature-padding';\r\n var featureRatio = GeneralAssetUrl+'square.png';\r\n var overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-wakeboards.png';\r\n var paddingFix = '0%';\r\n var scaleOffset = '1.1';\r\n var transformYOffset = '-10%';\r\n var transformXOffset = \"0%\";\r\n var featuresColumnMaxWidth = '700px';\r\n var simpleProduct = false;\r\n var image1 = prodAssetUrl+product.attributes.slug+'1_1000.png';\r\n var image2 = prodAssetUrl+product.attributes.slug+'2_1000.png';\r\n if(window.outerWidth < 800){\r\n image1 = prodAssetUrl+product.attributes.slug+'1_500.png';\r\n image2 = prodAssetUrl+product.attributes.slug+'2_500.png';\r\n }\r\n let featuresBackgroundColor = '#f2f2f2';\r\n let featuresTextColor = '#000';\r\n if(product.attributes.customFeaturesColor){\r\n featuresBackgroundColor = product.attributes.customFeaturesColor;\r\n featuresTextColor = '#fff';\r\n }\r\n var width = '60%';\r\n var frontBack = false;\r\n var imageWidth = \"100%\";\r\n var removeFeatureSection = false;\r\n var removeFeatureThumb = false;\r\n var rotateOffset = \"0deg\";\r\n var imageMaxWidth = \"100%\";\r\n\r\n // Hyp\r\n if(product.attributes.brand == 'hyperlite'){\r\n if(product.attributes.category == ParseCategoryIds.wakeboards){\r\n frontBack = true;\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-wakeboard-features.png';\r\n productColumn = 6;\r\n featuresColumn = 6;\r\n width = '85%';\r\n featuresColumnMaxWidth = '700px'\r\n }\r\n else if(product.attributes.category == ParseCategoryIds.wakeboardPackages){\r\n frontBack = true;\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-wakeboard-features.png';\r\n width = '85%';\r\n }\r\n\r\n else if(product.attributes.category == ParseCategoryIds.wakesurfers && product.attributes.subcategory != \"EYPAnD1L4c\"){\r\n frontBack = true;\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-wakesurf-features.png';\r\n width = '75%';\r\n }\r\n else if(\r\n product.attributes.category == ParseCategoryIds.wakeboardBoots\r\n ){\r\n rotateOffset = \"30deg\"\r\n productColumn = 6;\r\n featuresColumn = 4;\r\n scaleOffset = \"1.2\";\r\n imageMaxWidth = \"1000px\"\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n rotateOffset = \"25deg\";\r\n transformYOffset = \"-5%\";\r\n transformXOffset = \"5%\";\r\n }\r\n }\r\n else {\r\n removeFeatureSection = true;\r\n }\r\n }\r\n if(product.attributes.brand == 'hosports'){\r\n if(product.attributes.category == ParseCategoryIds.iSup){\r\n frontBack = true;\r\n width = '85%';\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-isup.png';\r\n }\r\n else if(product.attributes.category == ParseCategoryIds.waterskis){\r\n if(product.attributes.subcategory != \"ryTmS05B5d\" && product.attributes.subcategory !=\"wWHALtqszI\"){\r\n frontBack = true;\r\n width = '70%';\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-singleSki.png';\r\n }\r\n }\r\n else if(product.attributes.category == ParseCategoryIds.kneeboards){\r\n if(product.attributes.subcategory != \"EGjcB4SaTl\"){\r\n frontBack = true;\r\n width = '85%';\r\n if(window.outerWidth < 800){\r\n width = '100%';\r\n }\r\n }\r\n }\r\n else if(product.attributes.category == ParseCategoryIds.waterskiGloves){\r\n frontBack = true;\r\n width = '90%';\r\n productColumn = 7;\r\n featuresColumn = 3;\r\n if(window.outerWidth < 800){\r\n width = '100%';\r\n }\r\n }\r\n else if(product.attributes.category == ParseCategoryIds.waterskiPackages){\r\n frontBack = true;\r\n width = '70%';\r\n overlapPlaceholder = GeneralAssetUrl+'overlap-placeholder-singleSki.png';\r\n }\r\n else if(\r\n product.attributes.category == ParseCategoryIds.iLand ||\r\n product.attributes.category == ParseCategoryIds.tubes ||\r\n product.attributes.category == ParseCategoryIds.radFadPads\r\n ){\r\n scaleOffset = \"1.2\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"-30%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n transformYOffset = \"-5%\";\r\n transformXOffset = \"0%\";\r\n }\r\n }\r\n\r\n else if(product.attributes.category == ParseCategoryIds.wetsuits){\r\n scaleOffset = \"1\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n }\r\n\r\n if(\r\n product.attributes.category == ParseCategoryIds.waterskiBoots\r\n ){\r\n rotateOffset = \"30deg\"\r\n productColumn = 6;\r\n featuresColumn = 4;\r\n scaleOffset = \"1.2\";\r\n imageMaxWidth = \"1000px\"\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n rotateOffset = \"25deg\";\r\n transformYOffset = \"-5%\";\r\n transformXOffset = \"5%\";\r\n }\r\n }\r\n\r\n if(product.attributes.category == ParseCategoryIds.iKayak || SimpleProductCategories.indexOf(product.attributes.category) != -1 || SimpleProductSubcategories.indexOf(product.attributes.subcategory) != -1){\r\n removeFeatureSection = true;\r\n }\r\n if(\r\n product.attributes.slug == \"waterski-accessories-syndicate-ponchowel\"\r\n ){\r\n removeFeatureSection = false;\r\n scaleOffset = \"1.2\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n }\r\n }\r\n if(\r\n product.attributes.slug == \"waterskis-sure-shot-platform-trainer\" ||\r\n product.attributes.slug == \"waterskis-hot-shot-trainers\"\r\n ){\r\n frontBack = false;\r\n scaleOffset = \"1.2\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n }\r\n }\r\n if(\r\n product.attributes.subcategory == \"EGjcB4SaTl\"\r\n ){\r\n removeFeatureSection = false;\r\n frontBack = false;\r\n scaleOffset = \".9\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n if(window.outerWidth < 800){\r\n scaleOffset = \"1\";\r\n transformYOffset = \"0%\";\r\n transformXOffset = \"0%\";\r\n }\r\n }\r\n }\r\n if(simpleProduct){\r\n return(\r\n
\r\n {this.state.forcedOrderFeatures && this.state.forcedOrderFeatures.map((data:any,index:any) => {\r\n if(dictionary[data]){\r\n return(\r\n

{dictionary[data].title}

\r\n )\r\n } else{\r\n return \r\n }\r\n })}\r\n
\r\n )\r\n }\r\n if(removeFeatureSection || (this.state.fullFeatures && this.state.fullFeatures.length == 0)) return ;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!frontBack && !removeFeatureThumb &&\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n {frontBack &&\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\n
\r\n
\r\n
\r\n
\r\n
\r\n

{this.state.sectionTitle}

\r\n
\r\n
\r\n
\r\n {this.state.forcedOrderFeatures && this.state.forcedOrderFeatures.map((data:any,index:any) => {\r\n if(dictionary[data]){\r\n return(\r\n
\r\n
{dictionary[data].title}
\r\n {dictionary[data].description &&

{dictionary[data].description}

}\r\n
\r\n )\r\n } else{\r\n return \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 } else{\r\n return \r\n }\r\n }\r\n}\r\n\r\nexport default HosportsProductTechFeatures;\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 React from 'react';\r\n// @ts-ignore\r\nimport Fade from 'react-reveal/Fade';\r\n\r\n/**\r\n *\r\n * Scroll Fade In component\r\n * @extends {React.Component}\r\n */\r\nclass ScrollFadeIn extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ScrollFadeIn;\r\n","import React from 'react';\r\nimport ScrollFadeIn from './../scroll-fade/./scroll-fade';\r\n// @ts-ignore\r\nimport ReactPlayer from 'react-player';\r\n\r\ninterface IProps {\r\n fullWidth?:boolean;\r\n video?:string;\r\n autoPlay?:boolean;\r\n muted?:boolean;\r\n controls?:boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Video Box Component\r\n * @extends {React.Component}\r\n */\r\nclass VideoBox extends React.Component {\r\n\r\n public render(): JSX.Element {\r\n const fullWidthClass = this.props.fullWidth ? 'full' : '';\r\n return (\r\n \r\n
\r\n {this.props.video &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default VideoBox;\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\n\r\nimport * as React from 'react';\r\n\r\nimport { IHosportsCustomProductData } from './hosports-custom-product.data';\r\nimport { IHosportsCustomProductProps } from './hosports-custom-product.props.autogenerated';\r\n\r\nexport interface IHosportsCustomProductViewProps extends IHosportsCustomProductProps {}\r\n\r\n/**\r\n *\r\n * HosportsCustomProduct component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HosportsCustomProduct extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default HosportsCustomProduct;\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\n\r\nimport * as React from 'react';\r\nimport { IHosportsCustomProductViewProps } from './hosports-custom-product';\r\n\r\nexport default (props: IHosportsCustomProductViewProps) => {\r\n return (\r\n
{'HO Sports Custom Product'}
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IHosportsParallaxFullWidthImageData } from './hosports-parallax-full-width-image.data';\r\nimport { IHosportsParallaxFullWidthImageProps } from './hosports-parallax-full-width-image.props.autogenerated';\r\n\r\nexport interface IHosportsParallaxFullWidthImageViewProps extends IHosportsParallaxFullWidthImageProps {\r\n\r\n}\r\n\r\n/**\r\n *\r\n * HosportsParallaxFullWidthImage component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HosportsParallaxFullWidthImage extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default HosportsParallaxFullWidthImage;\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\n\r\nimport * as React from 'react';\r\nimport { IHosportsParallaxFullWidthImageViewProps } from './hosports-parallax-full-width-image';\r\n\r\nexport default (props: IHosportsParallaxFullWidthImageViewProps) => {\r\n return (\r\n

{'Parallax Full Width Image'}

\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IHosportsParallaxTwoImageOverlappingLooseGridData } from './hosports-parallax-two-image-overlapping-loose-grid.data';\r\nimport { IHosportsParallaxTwoImageOverlappingLooseGridProps } from './hosports-parallax-two-image-overlapping-loose-grid.props.autogenerated';\r\n\r\nexport interface IHosportsParallaxTwoImageOverlappingLooseGridViewProps extends IHosportsParallaxTwoImageOverlappingLooseGridProps {\r\n\r\n}\r\n\r\n/**\r\n *\r\n * HosportsParallaxTwoImageOverlappingLooseGrid component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HosportsParallaxTwoImageOverlappingLooseGrid extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default HosportsParallaxTwoImageOverlappingLooseGrid;\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\n\r\nimport * as React from 'react';\r\nimport { IHosportsParallaxTwoImageOverlappingLooseGridViewProps } from './hosports-parallax-two-image-overlapping-loose-grid';\r\n\r\nexport default (props: IHosportsParallaxTwoImageOverlappingLooseGridViewProps) => {\r\n return (\r\n

{'Overlapping Loose Image Grid'}

\r\n );\r\n};\r\n","import React from 'react';\r\nimport Button from './../button/./button';\r\n// @ts-ignore\r\nimport {MobileBreakpoint, GeneralAssetUrl} from './../../themes/kent/utilities/constants';\r\n// @ts-ignore\r\nimport ImageOverlay from './../image-overlay/./image-overlay';\r\n\r\n/**\r\n *\r\n * Text Over Image Thumb With Button component\r\n * @extends {React.Component}\r\n */\r\n\r\n interface IState {\r\n isOpen?:any;\r\n fullScreenImage?:any;\r\n }\r\n\r\ninterface IProps {\r\n title?: string;\r\n tagline?: string;\r\n description?: string;\r\n image?: any;\r\n link?:any;\r\n thumbnails?:any;\r\n product3DGif?:any;\r\n buttonText?:any;\r\n direction?: any;\r\n sizes?: any;\r\n features?: any;\r\n}\r\n\r\nclass CustomProduct extends React.Component{\r\n public state: IState;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n isOpen:false,\r\n fullScreenImage:null\r\n };\r\n }\r\n\r\n\r\n public thumbnailClicked = (thumb:any) =>{\r\n this.setState({\r\n isOpen:true,\r\n fullScreenImage:thumb\r\n })\r\n }\r\n\r\n public hideOverlay = () =>{\r\n this.setState({\r\n isOpen:false\r\n })\r\n }\r\n\r\n public render(): JSX.Element {\r\n\r\n let directionClass = this.props.direction == 'right' ? 'flex-reverse mobile-reverse' : '';\r\n console.log(this.props)\r\n return (\r\n
\r\n
\r\n {this.props.image &&
\r\n \r\n
}\r\n
\r\n
\r\n {this.props.title &&

{this.props.title}

}\r\n {this.props.tagline &&
{this.props.tagline}
}\r\n {this.props.sizes &&\r\n
\r\n
{'Sizes'}
\r\n
\r\n {this.props.sizes.map((size:any, index:any) =>{\r\n return
\r\n {size}\r\n
\r\n })}\r\n
\r\n
\r\n }\r\n
\r\n {this.props.product3DGif &&
this.thumbnailClicked(this.props.product3DGif)} className=\"custom-product-thumb\" style={{backgroundImage:'url(\"'+GeneralAssetUrl+'3d-thumb.png\")'}}>\r\n \r\n
}\r\n {this.props.thumbnails && this.props.thumbnails.map((thumb:any, index:any) =>{\r\n return
this.thumbnailClicked(thumb)} className=\"custom-product-thumb\" style={{backgroundImage:'url(\"'+thumb+'\")'}}>\r\n \r\n
\r\n })}\r\n
\r\n {this.props.description &&

{this.props.description}

}\r\n {this.props.features &&\r\n
\r\n
{'Features'}
\r\n {this.props.features.map((feature:any, index:any) =>{\r\n return
\r\n

{feature}

\r\n
\r\n })}\r\n
\r\n }\r\n {this.props.link &&
}\r\n
\r\n
\r\n
\r\n {this.state.isOpen &&\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\n export default CustomProduct;\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\n\r\nimport React from 'react';\r\nimport { IHosportsCustomProductViewProps } from '../../../modules/hosports-custom-product/./hosports-custom-product';\r\n//@ts-ignore\r\nimport CustomProduct from \"./../../../baseComponents/custom-product/./custom-product\";\r\n\r\nexport default (props: IHosportsCustomProductViewProps) => {\r\n let config = props.config;\r\n let title = config.title;\r\n let tagline = config.tagline;\r\n let description = config.description;\r\n let image = config.image ? config.image.src : undefined;\r\n let product3DGif = config.product3DGif ? config.product3DGif.src : undefined;\r\n let link = null;\r\n let buttonText = null;\r\n if(config.link){\r\n link = config.link.linkUrl ? config.link.linkUrl.destinationUrl : '';\r\n buttonText = config.link ? config.link.linkText : '';\r\n }\r\n let direction = config.direction;\r\n let sizes = config.sizes;\r\n let features = config.features;\r\n let thumbnails = [];\r\n if(config.thumbnails){\r\n for (let i = 0; i < config.thumbnails.length; i++) {\r\n if(config.thumbnails[i]){\r\n thumbnails.push(config.thumbnails[i].src)\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\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 */\r\n\r\nimport React from 'react';\r\nimport { IHosportsParallaxFullWidthImageViewProps } from '../../../modules/hosports-parallax-full-width-image/./hosports-parallax-full-width-image';\r\nimport ParallaxWrapper from './../../../baseComponents/parallax-wrapper/./parallax-wrapper';\r\nimport ScrollFadeIn from './../../../baseComponents/scroll-fade/./scroll-fade';\r\n// @ts-ignore\r\nimport {MobileBreakpoint} from '../utilities/constants';\r\n\r\ninterface IState {\r\n imageWidth:number;\r\n}\r\n\r\n/**\r\n *\r\n * Parallax Full Width Image component\r\n * @extends {React.Component}\r\n */\r\nclass HosportsParallaxFullWidthImage extends React.Component {\r\n\r\n public state: IState;\r\n public imageRef = React.createRef();\r\n\r\n constructor(props: IHosportsParallaxFullWidthImageViewProps) {\r\n super(props);\r\n this.state = {\r\n imageWidth:0\r\n };\r\n }\r\n\r\n public componentDidMount = () => {\r\n window.addEventListener(\"resize\", this.updateDimensions);\r\n this.updateDimensions();\r\n }\r\n\r\n public updateDimensions = () => {\r\n if(this.imageRef.current){\r\n let imageWidth = this.imageRef.current.getBoundingClientRect().width;\r\n this.setState({\r\n imageWidth:imageWidth\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateDimensions);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const image = (window.outerWidth < MobileBreakpoint && config.mobileImage) ? config.mobileImage : config.image;\r\n return (\r\n \r\n
\r\n {image &&\r\n
\r\n
\r\n \r\n
\r\n {config.title &&

{config.title}

}\r\n {config.subtitle &&

{config.subtitle}

}\r\n {config.buttonLink &&
{config.buttonText}
}\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 HosportsParallaxFullWidthImage;\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\n\r\nimport React from 'react';\r\nimport { IHosportsParallaxTwoImageOverlappingLooseGridViewProps } from '../../../modules/hosports-parallax-two-image-overlapping-loose-grid/./hosports-parallax-two-image-overlapping-loose-grid';\r\nimport ParallaxWrapper from './../../../baseComponents/parallax-wrapper/./parallax-wrapper';\r\nimport ScrollFadeIn from './../../../baseComponents/scroll-fade/./scroll-fade';\r\n// @ts-ignore\r\nimport {MobileBreakpoint} from './../utilities/constants';\r\n\r\ninterface IState {\r\n largeImageWidth:number;\r\n smallImageWidth:number;\r\n}\r\n\r\n/**\r\n *\r\n * Parallax Loose Grid component\r\n * @extends {React.Component}\r\n */\r\nclass HosportsParallaxTwoImageOverlappingLooseGrid extends React.Component {\r\n\r\n public state: IState;\r\n public largeImageRef = React.createRef();\r\n public smallImageRef = React.createRef();\r\n\r\n constructor(props: IHosportsParallaxTwoImageOverlappingLooseGridViewProps) {\r\n super(props);\r\n this.state = {\r\n largeImageWidth:0,\r\n smallImageWidth:0\r\n };\r\n }\r\n\r\n public componentDidMount = () => {\r\n window.addEventListener(\"resize\", this.updateDimensions);\r\n this.updateDimensions();\r\n }\r\n\r\n public updateDimensions = () => {\r\n if(this.largeImageRef.current && this.smallImageRef.current){\r\n let largeImageWidth = this.largeImageRef.current.getBoundingClientRect().width;\r\n let smallImageWidth = this.smallImageRef.current.getBoundingClientRect().width;\r\n this.setState({\r\n largeImageWidth:largeImageWidth,\r\n smallImageWidth:smallImageWidth\r\n })\r\n }\r\n }\r\n\r\n public componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateDimensions);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const image = (window.outerWidth < MobileBreakpoint && config.primaryMobileImage) ? config.primaryMobileImage : config.primaryImage;\r\n return (\r\n \r\n
\r\n {config.secondaryImage &&\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n }\r\n {image &&\r\n
\r\n
\r\n {config.title &&

{config.title}

}\r\n {config.subtitle &&

{config.subtitle}

}\r\n {config.buttonLink &&
{config.buttonText}
}\r\n
\r\n
\r\n
\r\n }\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default HosportsParallaxTwoImageOverlappingLooseGrid;\r\n","import Parse from 'parse';\r\nimport {ModelYear,YoutubeApiKey} from './constants';\r\nexport const ProductAssetUrl = \"https://assets.hosports.com/\"+ModelYear+\"/img/\";\r\nexport const ResizeableProductAssetUrl = \"https://assets.hosports.com/image.php?src=\"+ModelYear+\"/img/\";\r\nimport {GetFromParseBySlug, FindFromParse} from './parse';\r\nimport Axios from 'axios';\r\n\r\nexport const BaseUrl = () =>{\r\n /*\r\n if international\r\n let url = window.location.pathname.split('/');\r\n if(url[1]){\r\n return '/'+url[1]+'/'\r\n } else{\r\n return '/'\r\n }\r\n */\r\n return '/'\r\n};\r\n\r\nexport const SetupSiteText = async() =>{\r\n const SiteTextQuery = Parse.Object.extend(\"SiteText\");\r\n const sitetextquery = new Parse.Query(SiteTextQuery);\r\n sitetextquery.limit(10000)\r\n const siteTextResults = await sitetextquery.find();\r\n var siteText = {};\r\n window.siteTextResults = siteTextResults;\r\n for (var i = 0; i < siteTextResults.length; i++) {\r\n let data = siteTextResults[i]\r\n siteText[data.attributes.slug] = {};\r\n var content = {};\r\n data.attributes.content.map((item,index)=>{\r\n content[item.lang]=item.title;\r\n if(index == data.attributes.content.length -1){\r\n siteText[data.attributes.slug] = content;\r\n }\r\n })\r\n }\r\n window.siteText = siteText;\r\n return true;\r\n}\r\n\r\nexport const SetupSeo = async() =>{\r\n const SeoQuery = Parse.Object.extend(\"Seo\");\r\n const seoquery = new Parse.Query(SeoQuery);\r\n seoquery.equalTo('site',window.site);\r\n seoquery.limit(1000)\r\n const seoresults = await seoquery.find();\r\n var seo = {};\r\n for (var i = 0; i < seoresults.length; i++) {\r\n var data = seoresults[i];\r\n seo[data.attributes.url] = data;\r\n }\r\n window.seo = seo;\r\n return true;\r\n}\r\n\r\nexport const SetupProducts = async() =>{\r\n const ProductQuery = Parse.Object.extend(\"Products\"+ModelYear);\r\n const productquery = new Parse.Query(ProductQuery);\r\n productquery.equalTo('site',window.site);\r\n productquery.limit(1000)\r\n const productResults = await productquery.find();\r\n window.productDictionary = {};\r\n window.products = productResults;\r\n for (var i = 0; i < productResults.length; i++) {\r\n window.productDictionary[productResults[i].id] = productResults[i];\r\n }\r\n return true\r\n}\r\n\r\nexport const SetupRedirects = async() =>{\r\n if(window.location.pathname.indexOf('product-detail') != -1){\r\n var slug = window.location.search.replace('?id=','');\r\n window.location.assign('product/'+slug)\r\n }\r\n return true\r\n}\r\n\r\nexport const SetupSubcategories = async() =>{\r\n const SubcategoryQuery = Parse.Object.extend(\"Subcategories\");\r\n const subcategoryquery = new Parse.Query(SubcategoryQuery);\r\n subcategoryquery.equalTo('site',window.site);\r\n subcategoryquery.ascending('order')\r\n const subcategoryResults = await subcategoryquery.find();\r\n window.subcategoryDictionary = {};\r\n window.subcategories = subcategoryResults;\r\n for (var i = 0; i < subcategoryResults.length; i++) {\r\n window.subcategoryDictionary[subcategoryResults[i].id] = subcategoryResults[i];\r\n }\r\n return true;\r\n}\r\n\r\nexport const SetupTeam = async() =>{\r\n const TeamQuery = Parse.Object.extend(\"Team\"+ModelYear);\r\n const teamquery = new Parse.Query(TeamQuery);\r\n teamquery.equalTo('site',window.site);\r\n teamquery.equalTo('visibility',true);\r\n teamquery.ascending('order')\r\n teamquery.limit(1000)\r\n const teamResults = await teamquery.find();\r\n window.teamDictionary = {};\r\n window.team = teamResults;\r\n for (var i = 0; i < teamResults.length; i++) {\r\n window.teamDictionary[teamResults[i].id] = teamResults[i];\r\n }\r\n return true\r\n}\r\n\r\nexport const GetSubcategoriesFromCategory = async (category) => {\r\n var subcategories = window.subcategories.filter(subcategory => subcategory.attributes.parent && subcategory.attributes.parent == category);\r\n return subcategories;\r\n}\r\n\r\nexport const GetProductBySlug = async (slug) => {\r\n var products = window.products.filter(product => product.attributes.slug == slug);\r\n return products[0];\r\n}\r\n\r\nexport const GetProductsByQuery = async (key,value,limit) => {\r\n let lang = window.lang;\r\n if(window.lang == 'eu'){\r\n lang = \"de\"\r\n }\r\n let products = window.products.filter(product => product.attributes[key] == value && product.attributes.locale.indexOf(lang) != -1);\r\n let results = products;\r\n if(products && limit){\r\n results = products.slice(0,limit)\r\n }\r\n return results;\r\n}\r\n\r\nexport const GetProductsByCollection = async (collection) => {\r\n let products = window.products.filter(product => product.attributes.collections && product.attributes.collections.indexOf(collection) != -1);\r\n return products;\r\n}\r\nexport const GetProductsByCategory = async (category) => {\r\n let products = window.products.filter(product => product.attributes.category && product.attributes.category == category);\r\n return products;\r\n}\r\n\r\nexport const GetProductsBySubCategory = async (subcategory) => {\r\n let products = window.products.filter(product => product.attributes.subcategory && product.attributes.subcategory == subcategory);\r\n return products;\r\n}\r\n\r\nexport const ReorderProducts = async (products) => {\r\n var sortedProducts = products.sort(compare);\r\n return sortedProducts;\r\n\r\n function compare(a, b){\r\n return a.attributes.order - b.attributes.order;\r\n }\r\n}\r\n\r\nexport const GetProductsBySlugs = async (slugs) => {\r\n var products = window.products.filter(product => slugs.indexOf(product.attributes.slug) != -1);\r\n return products;\r\n}\r\n\r\nexport const GetTeamByType = async (type) => {\r\n var Team;\r\n if(type == 'wakeboard'){\r\n Team = window.team;\r\n }\r\n if(type == \"Ski\"){\r\n Team = window.team.filter(rider => rider.attributes.team == \"Ski\");\r\n } else if (type == \"Wake/Knee\"){\r\n Team = window.team.filter(rider => rider.attributes.team == \"Wake/Knee\");\r\n }\r\n return Team;\r\n}\r\n\r\nexport const GetRidersBySlugs = async (slugs) => {\r\n var riders = window.team.filter(rider => slugs.indexOf(rider.attributes.slug) != -1);\r\n return riders;\r\n}\r\nexport const GenerateProductAssetUrl = (year) =>{\r\n let url = 'https://assets.hosports.com/'+ModelYear+'/img/';\r\n if(year){\r\n url = 'https://assets.hosports.com/'+year+'/img/';\r\n }\r\n return url\r\n}\r\nexport const OrderProductsByPrice = async (products) => {\r\n var sortedProducts = products.sort(compare);\r\n return sortedProducts;\r\n function compare(a, b){\r\n if(b.attributes.content[0].price && a.attributes.content[0].price){\r\n return parseFloat(b.attributes.content[0].price.toString().replace(',','')) - parseFloat(a.attributes.content[0].price.toString().replace(',',''))\r\n } else{\r\n return false\r\n }\r\n }\r\n}\r\n\r\nexport const ReturnProductDetailLink = async (product) => {\r\n /*\r\n if(product.attributes.msftRecordIdMap){\r\n let keys = Object.keys(product.attributes.msftRecordIdMap)\r\n return '/hl/'+product.attributes.slug+'/'+product.attributes.msftRecordIdMap[keys[0]]+'.p';\r\n } else{\r\n return ''\r\n }\r\n */\r\n if(window.location.search){\r\n return '/product/'+product.attributes.slug+window.location.search\r\n } else{\r\n return '/product/'+product.attributes.slug\r\n }\r\n}\r\n\r\nexport const ReturnLocalizedLink = async (url) => {\r\n if(window.location.search){\r\n let baseUrl = await BaseUrl();\r\n return baseUrl+url+window.location.search.replace('?','&')\r\n } else{\r\n return baseUrl+url\r\n }\r\n}\r\n\r\n\r\nexport const GetUrlVariable = (variable) => {\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0] == variable) {\r\n return pair[1];\r\n }\r\n }\r\n return (false);\r\n}\r\n\r\nexport const getCookieValue = (a) => {\r\n var b = document.cookie.match('(^|;)\\\\s*' + a + '\\\\s*=\\\\s*([^;]+)');\r\n return b ? b.pop() : '';\r\n}\r\n\r\nexport const GetLocalizedText = (content,target) =>{\r\n var text;\r\n //var lang = window.lang;\r\n var lang = 'en';\r\n if(content){\r\n content.map((data,index) => {\r\n if(data.lang == 'en'){\r\n text = data[target]\r\n }\r\n if(data.lang == lang && data[target]){\r\n if(data[target] != \"\" && data[target] != \" \"){\r\n text = data[target];\r\n }\r\n }\r\n if(index == content.length -1){\r\n return text;\r\n }\r\n })\r\n }\r\n return (text);\r\n}\r\n\r\nexport const GetLocalText = async (slug) => {\r\n let text = await GetFromParseBySlug('SiteText',slug)\r\n if(text){\r\n let localizedText = await GetLocalizedText(text.attributes.content,'title');\r\n if(localizedText){\r\n return localizedText\r\n } else{\r\n return '';\r\n }\r\n } else{\r\n return '';\r\n }\r\n}\r\n\r\nexport const GetLocalizedPrice = async (content,target) => {\r\n var price = '';\r\n var lang = window.lang;\r\n if(window){\r\n if(window.location){\r\n if(window.location.href){\r\n if(window.location.href.indexOf('fatsac.com') != -1 || window.location.href.indexOf('barefootinternational.com') != -1){\r\n lang = \"en\"\r\n }\r\n }\r\n }\r\n }\r\n console.log(lang)\r\n var englishPrice = \"\";\r\n content.map((data,index) => {\r\n if((lang == 'en' && data.lang == 'en')){\r\n price = '$'+data['price'];\r\n englishPrice = '$'+data['price'];\r\n }\r\n if(lang == 'fr' && data.lang == 'fr'){\r\n var flag = true;\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '$'+data['price']+' CAD';\r\n }\r\n }\r\n if(lang == 'ca-fr' && data.lang == 'ca-fr'){\r\n var flag = true;\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '$'+data['price']+' CAD';\r\n }\r\n }\r\n if(lang == 'ca-en' && data.lang == 'ca-en'){\r\n var flag = true;\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '$'+data['price']+' CAD';\r\n }\r\n }\r\n\r\n if(lang == 'au' && data.lang == 'au'){\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '$'+data['price']+' AUD';\r\n }\r\n }\r\n if(lang == 'de' && data.lang == 'de'){\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '€'+data['price'];\r\n }\r\n }\r\n if(lang == 'uk' && data.lang == 'uk'){\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '£'+data['price'];\r\n }\r\n }\r\n if(lang == 'eu' && data.lang == 'eu'){\r\n if(data['price'] != \"\" && data['price'] != \" \" && data['price'] != null){\r\n price = '€'+data['price'];\r\n }\r\n }\r\n if(index == content.length -1){\r\n return price;\r\n }\r\n })\r\n return price;\r\n}\r\n\r\n\r\nexport const ShuffleArray = (a) => {\r\n var j, x, i;\r\n for (i = a.length - 1; i > 0; i--) {\r\n j = Math.floor(Math.random() * (i + 1));\r\n x = a[i];\r\n a[i] = a[j];\r\n a[j] = x;\r\n }\r\n return a;\r\n}\r\n\r\nexport const StripHtml = (html) =>{\r\n var tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = html;\r\n return tmp.textContent.replace(/(\\r\\n|\\n|\\r)/gm, \"\") || tmp.innerText.replace(/(\\r\\n|\\n|\\r)/gm, \"\") || \"\";\r\n}\r\n\r\nexport const RemoveLoading = () =>{\r\n let loader = document.getElementById('loading');\r\n setTimeout(()=>{\r\n loader.parentNode.removeChild(loader)\r\n }, 750);\r\n loader.style.opacity = '0';\r\n}\r\n\r\nexport const GetExternalProductId = async(data) =>{\r\n if(data.productSpecificationData){\r\n return data.productSpecificationData.then((specs) => {\r\n let slug = null;\r\n for (let index = 0; index < specs.length; index++) {\r\n if(specs[index].Name === \"ExternalItemId\"){\r\n slug = specs[index].TextValue;\r\n }\r\n }\r\n return slug;\r\n });\r\n } else{\r\n return null\r\n }\r\n}\r\n\r\nexport const GetThumbnailFromVimeo = async(url) =>{\r\n let thumbnail = null;\r\n if(url){\r\n let response = await Axios.get('https://vimeo.com/api/oembed.json?url='+url);\r\n console.log(response)\r\n if(response){\r\n if(response.data){\r\n thumbnail = response.data.thumbnail_url\r\n }\r\n }\r\n }\r\n return thumbnail\r\n}\r\n\r\nexport const DoesProductShowDetailImages = async(product,category,subcategory) =>{\r\n let value = false;\r\n if(category){\r\n if(category.attributes.showProductDetailImages){\r\n value = true\r\n }\r\n }\r\n if(subcategory){\r\n if(subcategory.attributes.showProductDetailImages){\r\n value = true\r\n }\r\n }\r\n if(product){\r\n if(product.attributes.showProductDetailImages){\r\n value = true\r\n }\r\n }\r\n return value\r\n}\r\n\r\nexport const DoesProductShowHeroImage = async(product,category,subcategory) =>{\r\n let value = false;\r\n if(category){\r\n if(category.attributes.showProductHeroImage){\r\n value = true\r\n }\r\n }\r\n if(subcategory){\r\n if(subcategory.attributes.showProductHeroImage){\r\n value = true\r\n }\r\n }\r\n if(product){\r\n if(product.attributes.showProductHeroImage){\r\n value = true\r\n }\r\n }\r\n return value\r\n}\r\n\r\nexport const GetYoutubeIdFromUrl = async(youtubeUrl) =>{\r\n let videoId = null;\r\n if(youtubeUrl){\r\n videoId = youtubeUrl.split('v=')[1];\r\n if(videoId){\r\n let ampersandPosition = videoId.indexOf('&');\r\n if(ampersandPosition != -1) {\r\n videoId = videoId.substring(0, ampersandPosition);\r\n }\r\n }\r\n }\r\n return videoId\r\n}\r\n\r\nexport const GetProductFromItemNumber = async (itemNumber,year) =>{\r\n let prodModelYear = year ? year : ModelYear;\r\n if(itemNumber){\r\n let num = parseInt(itemNumber)\r\n const results = await FindFromParse(\"ApiProductVariants\"+prodModelYear,[{\"method\":\"equalTo\",\"key\":\"itemNumber\",\"value\":num}]);\r\n if(results && results[0]){\r\n let product = await GetExternalProductInfo(results[0].attributes.slug,prodModelYear);\r\n return product\r\n }\r\n } else{\r\n return null\r\n }\r\n}\r\n\r\nexport const GetExternalProductInfo = async(slug,year) =>{\r\n let prodModelYear = year ? year : ModelYear;\r\n if(slug){\r\n let product = await GetFromParseBySlug('Products'+prodModelYear,slug);\r\n return product;\r\n } else{\r\n return null\r\n }\r\n}\r\n\r\nexport const GetLocaleValue = () =>{\r\n let lang = window.lang;\r\n if(!lang){\r\n lang = \"en\";\r\n }\r\n return lang;\r\n}\r\n\r\nexport const GetUserLocale = async() =>{\r\n let response = await Axios.get('https://alpine-hosports.herokuapp.com/getUserLocale');\r\n var country = response.data.geo.country.toLowerCase();\r\n let lang;\r\n var language =\r\n (navigator.languages && navigator.languages[0]) ||\r\n navigator.language ||\r\n navigator.userLanguage;\r\n var languageWithoutRegionCode = language.toLowerCase().split(/[_-]+/)[0];\r\n if(country){\r\n if(country == \"de\"){\r\n lang='de'\r\n } else if(country == \"gb\"){\r\n lang='uk'\r\n } else if(country == \"au\"){\r\n lang='au'\r\n } else if(country == \"ru\"){\r\n lang='ru'\r\n } else if(country == \"ca\"){\r\n lang='ca-en'\r\n } else if(language.includes(\"fr\")){\r\n lang='fr'\r\n } else{\r\n lang = 'en'\r\n }\r\n } else if(language){\r\n if(language.includes(\"ca-fr\")){\r\n lang='ca-fr'\r\n } else if(language.includes(\"ca-en\")){\r\n lang='ca-en'\r\n } else{\r\n lang = 'en'\r\n }\r\n }\r\n window.lang = lang;\r\n return lang\r\n}\r\n\r\nexport const TruncateText = (text,length) => {\r\n let description = text;\r\n if(description){\r\n if(description.length > length){\r\n description = description.slice(0,length)+'...';\r\n }\r\n }\r\n return description\r\n}\r\n\r\nexport const CapitalizeFirstLetter = (text) => {\r\n if(text){\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n } else{\r\n return text\r\n }\r\n\r\n}\r\n"],"names":["Button","React","constructor","props","super","render","styles","classList","this","className","text","backgroundColor","color","outline","ignoreAnimation","button","style","href","target","HosportsImageOverlay","onFullScreenImageLoad","setState","onFullScreenImageLoaded","state","fullScreenImageLoadedClass","PortalModal","modalHidden","dismissed","modalActive","active","content","src","image","onLoad","backgroundImage","ParallaxWrapper","ParallaxValue","window","outerWidth","MobileBreakpoint","ParallaxValueFast","ParallaxValueSlow","ParallaxProvider","Parallax","y","children","componentDidMount","setupModal","componentDidUpdate","modalId","Math","floor","random","elem","document","createElement","setAttribute","body","appendChild","hideModal","setTimeout","frame","theme","positionType","hideCloseButton","position","animateOut","closeImage","GeneralAssetUrl","componentTheme","extraClass","portal","getElementById","ReactDOM","onClick","imagesLoaded","HosportsProductDetailImageRow","async","product","DoesProductShowDetailImages","category","subcategory","fillModule","images","attributes","targetProduct","prodAssetUrl","GenerateProductAssetUrl","year","parentProduct","i","push","slug","shown","imageError","index","splice","length","imageLoaded","showImage","console","log","isOpen","fullScreenImageIndex","hideImage","ready","map","onError","ImageOverlay","HosportsProductShaper","name","description","shaper","GetLocalText","width","SpecTable","productSpecs","products","fontSize","paddingBottom","textAlign","display","whiteSpace","flexWrap","overflowX","WebkitOverflowScrolling","Object","keys","data","title","marginBottom","flex","padding","paddingTop","border","WakeboardFlexNumber","wakeboardFlexNumber","margin","WakeboardSpecs","setUpScreen","skill","wakeboardSkill","pop","wakeboardPopRocker","wakeboardFlex","terrain","wakeboardType","specs","percentage","includes","minValue","maxValue","key","customColor","customSpecsColor","forceBrandColor","item","FatsacColors","FatsacSpecs","descriptions","fatsacSizes","sizes","split","productImage","fatsacProductWeight","size","fatsacImage","height","alignItems","justifyContent","id","Specs","maxWidth","HosportsProductTechFeatures","tech","details","featureDictionary","fullFeatures","singleTitleFeatures","featureList","forcedOrderFeatures","features","productFeatures","ModelYear","parseClass","results","FindFromParse","feature","GetLocalizedText","x","sectionTitle","fixBrokenImage","brokenImage","onImageLoad","dictionary","productColumn","featuresColumn","featureColumnStyles","featureRatio","overlapPlaceholder","scaleOffset","transformYOffset","transformXOffset","featuresColumnMaxWidth","image1","image2","featuresBackgroundColor","featuresTextColor","customFeaturesColor","frontBack","removeFeatureSection","rotateOffset","imageMaxWidth","brand","ParseCategoryIds","wakeboards","wakeboardPackages","wakesurfers","wakeboardBoots","iSup","waterskis","kneeboards","waterskiGloves","waterskiPackages","iLand","tubes","radFadPads","wetsuits","waterskiBoots","iKayak","SimpleProductCategories","indexOf","SimpleProductSubcategories","transform","zIndex","marginTop","ScrollFadeIn","Fade","bottom","distance","duration","VideoBox","fullWidthClass","fullWidth","video","ReactPlayer","url","playing","autoPlay","muted","controls","playsinline","HosportsCustomProduct","renderView","HosportsParallaxFullWidthImage","HosportsParallaxTwoImageOverlappingLooseGrid","CustomProduct","thumbnailClicked","thumb","fullScreenImage","hideOverlay","directionClass","direction","tagline","product3DGif","thumbnails","link","buttonText","config","undefined","linkUrl","destinationUrl","linkText","imageRef","addEventListener","updateDimensions","current","imageWidth","getBoundingClientRect","componentWillUnmount","removeEventListener","mobileImage","ref","subtitle","buttonLink","tint","largeImageRef","smallImageRef","largeImageWidth","smallImageWidth","primaryMobileImage","primaryImage","secondaryImage","BaseUrl","ReorderProducts","sort","a","b","order","ReturnProductDetailLink","location","search","getCookieValue","cookie","match","lang","GetFromParseBySlug","localizedText","GetLocalizedPrice","price","ShuffleArray","j","StripHtml","html","tmp","innerHTML","textContent","replace","innerText","value","showProductDetailImages","DoesProductShowHeroImage","showProductHeroImage","GetYoutubeIdFromUrl","videoId","youtubeUrl","ampersandPosition","substring","GetProductFromItemNumber","itemNumber","prodModelYear","num","parseInt","GetExternalProductInfo","GetLocaleValue","TruncateText","slice","CapitalizeFirstLetter","charAt","toUpperCase"],"sourceRoot":""}