{"version":3,"sources":["cssInJs/variables.js","lib/form/controls/FilePond.js","form/controls.js","form/index.js","lib/form/validators/required.js","site/warranty/useStep.js","site/gourmetPro/sections/cookingCompanion.js","site/gourmetPro/sections/infoPanel2.js","site/gourmetPro/sections/slidingRecipeTiles.js","site/gourmetPro/sections/differenceInfoPanel.js","lib/form/formRenderHelper.js","lib/utils-core/url.js","lib/utils-core/form.js","lib/utils-core/array.js","lib/utils-core/date.js","lib/utils-core/css.js","lib/utils-core/ui.js","lib/utils-core/money.js","lib/utils-core/text.js","lib/utils-core/random.js","lib/utils-core/object.js","lib/utils-core/media.js","lib/utils-core/index.js","site/siteUtils.js","utils/index.js","lib/form/validatorHelper.js","lib/form/components/ValidationAlert.js","lib/store/reducers.js","lib/store/storeProvider.js","store/index.js","lib/form/formModelHelper.js","lib/form/formBuilder.js","lib/form/validators/email.js","lib/form/validators/date.js","lib/form/validators/length.js","lib/form/validators.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/TextareaInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/CheckboxInput.js","lib/form/controls/SelectInput.js","lib/form/controls/HiddenInput.js","lib/form/controlRenderer.js","lib/form/formValidate.js","lib/form/useForm.js","lib/form/index.js","lib/css-emotion/breakpoints.js","lib/css-emotion/mixin.js","cssInJs/index.js","lib/polyfill-ie/index.js","components/notFound/notFound.js","lib/app-version/app-version-v2.js","components/form/buttons/button.js","lib/ui-error/errorMessage.js","lib/ui-error/errorPopup.js","lib/icons-svg/icons/NarrowRight.js","lib/icons-svg/icons/Loading--circle.js","lib/ui-loading-v2/sectionLoading.js","lib/net-api/index.js","lib/dev-mediaQueryStatus/index.js","lib/seo/meta-tag.js","lib/seo/tracking--deprecated.js","lib/animation/animationUtils.js","lib/instagram-useInstagram/index.js","lib/ui-parallax/index.js","lib/router/useRouter.js","lib/router/useHistoryStore.js","lib/router/handleLink.js","lib/router/siteLink.js","lib/instagram-feed/feedStyle.js","lib/instagram-feed/feed.js","lib/youtube/youtubeEmbed.js","components/index.js","lib/youtube/iframeApi.js","cms/utils/cmsUtils.js","cms/items/bannerPanel/view.js","cms/items/bannerItem/view.js","cms/items/panel/view.js","cms/items/html/view.js","cms/items/testimonialPanel/view.js","cms/items/testimonialItem/view.js","cms/items/imagePanel/view.js","cms/items/pageTiles/tileStyle.js","cms/items/pageTiles/tileStyle--big.js","cms/items/pageTiles/tileStyle--recipe.js","cms/items/pageTiles/view.js","cms/items/singleBanner/view.js","cms/items/contactForm/contactFormModel.js","lib/tracking/gtm.js","cms/items/contactForm/contactForm.js","cms/items/contactForm/view.js","lib/youtube/youtubeBanner--mobilePopup.js","cms/items/youtubeBannerPanel/view.js","site/productTile--slider/productListStyle.js","site/searchResult/searchResult.js","components/TextWithJavaScript/view.js","site/productTile--slider/tileStyle.js","site/productTile--slider/productTiles--simple.js","site/siteStyle.js","site/trending/trending.js","site/category/categoryStyle.js","site/category/categoryMobileStyle.js","site/category/productCategory.js","site/wheretobuy/wheretobuyList.js","site/warranty/warrantyLazy.js","site/joinus/joinStyle.js","site/joinus/joinForm.js","site/joinus/joinFormData.js","site/ambassador/ambassadorStyle.js","site/ambassador/ambassadorForm.js","site/ambassador/ambassadorFormData.js","cms/items/code/view.js","cms/items/blogPosts/view.js","cms/items/blogPostTitle/view.js","cms/items/videoHolder/tileStyle.js","cms/items/videoHolder/view.js","components/youtubeEmbedPopupV2/youtubeEmbedPopupV2Style.js","components/youtubeEmbedPopupV2/youtubeEmbedPopupV2.js","components/youtubeEmbedPopupV2/iframeApi.js","cms/items/videoItem/view.js","cms/items/multiColumnPanel/view.js","cms/items/expandableHtml/view.js","components/expandablePanel/style.js","components/expandablePanel/view.js","cms/items/carousel/style.js","cms/items/carousel/view.js","cms/items/carouselItem/view.js","cms/items/printShare/view.js","site/ksjbPage/ksjbPageMenuBar/style.js","site/ksjbPage/ksjbPageMenuBar/view.js","site/ksjbPage/KsjbPageCarousel/style.js","site/ksjbPage/KsjbPageCarousel/view.js","site/ksjbPage/QuizPanel/style.js","site/ksjbPage/QuizPanel/view.js","components/videoEmbed/style.js","components/videoEmbed/view.js","site/product/productTileV2.js","components/recipeRelProducts/view.js","cms/items/item.js","cms/pages/viewPage/viewPage.js","cms/services/cms-radio-sender.js","cms/services/cms-radio-receiver.js","cms/services/cms-html-editor.js","cms/services/cms-page-controller.js","cms/pages/editPage/editPage.js","layout/topHeader/searchBar.js","layout/topHeader/navBar.js","layout/backButton/backButtonStyle.js","layout/backButton/backButton.js","layout/hamburger/hamburgerStyle.js","layout/hamburger/hamburger.js","layout/topHeader/topHeaderStyle.js","layout/topHeader/topHeader.js","layout/footer/footerStyle.js","layout/footer/footer.js","components/bottomDrawer/index.js","layout/bottomDock/bottomDock.js","site/product/productViewStyle.js","components/breadcrumb/breadcrumb.js","cms/pages/partials/viewPartial.js","site/productTile--slider/productTiles.js","site/embed/instagram.js","site/embed/tiktok.js","site/product/productView.js","layout/popup/commonVideoPopup.js","AppRouteChanged.js","site/gourmetPro/gourmetProLoading.js","App.js","serviceWorker.js","index.js","lib/service-worker/swHelper.js","lib/net-loader/loadJs.js","lib/net-loader/index.js","site/bazzarVoice/useBV.js","lib/utils-core/debounce.js","config.js","env.js","site/productTile/productTileStyle.js","site/productTile/productTile.js"],"names":["variables","familyBase","familyHeader","primaryColor","fontColor","bgColor","greenColor2","linkHoverColor","breakpointNames","breakpoints","registerPlugin","FilePondPluginFileValidateSize","FilePondPluginFileValidateType","FilePondPluginImageResize","FilePondPluginImageTransform","FilePondUploader","control","handleChange","formOption","React","files","setFiles","name","errors","label","style","filePond","helpText","attrs","fieldId","utils","random","shortId","fieldLabel","getLabel","ref","customValueFn","current","getFiles","map","x","serverId","className","htmlFor","allowMultiple","maxFileSize","maxFiles","server","process","serverProcess","site","resourcePath","fetch","revert","oninit","console","log","onupdatefiles","fileItems","newVal","persist","target","value","checked","fileItem","file","labelIdle","acceptedFileTypes","allowImageResize","imageResizeTargetWidth","imageResizeUpscale","dangerouslySetInnerHTML","__html","ValidationAlert","getSiteControl","type","Required","message","opt","createValidator","e","validateOpt","triggeredByChange","incomplete","isEmpty","getNameForValidator","val","Array","isArray","length","useStep","initialSteps","useState","steps","setSteps","currentStep","setCurrentStep","lastStep","setLastStep","moveTo","index","canGo","filled","Math","max","i","moveNext","movePrev","markAsFilled","canGoNext","canGoPrev","Portal","children","document","createElement","el","useEffect","mount","getElementById","appendChild","removeChild","createPortal","companions","id","title","icon","icon2","img","description","CookingCompanion","s","gpcc__buttons","display","flexWrap","justifyContent","maxWidth","margin","gpcc__button","mq","flex","cursor","padding","transform","color","gpcc__button__icon","maxHeight","transition","gpcc__button__title","fontWeight","marginTop","textAlign","portal__background","backgroundColor","position","top","left","width","height","zIndex","portal__close__btn","right","svg","gourmet__pro__cooking__contents","gourmet__pro__cooking__contents__inner","gourmet__pro__cooking__items","gourmet__pro__cooking__item","flexDirection","marginLeft","backgroundPosition","backgroundRepeat","backgroundSize","paddingTop","fontSize","gourmet__pro__cooking__arrow__p","gourmet__pro__cooking__arrow__n","gourmet__pro__cooking__dots","gourmet__pro__cooking__dot","openPopup","setOpenPopup","setCurrent","gourmetItemsRef","useRef","css","onClick","body","overflow","companion","key","backgroundImage","src","alt","_current","window","innerWidth","_d","setTimeout","_height","querySelectorAll","querySelector","offsetHeight","bottom","openCookingCompanions","informationsData","open","InfoPanel2","gourmet__pro__info__p2","paddingBottom","gourmet__pro__info__p2__c","gourmet__pro__info__p2__menu","minWidth","background","borderTopRightRadius","borderTopLeftRadius","borderBottomLeftRadius","borderBottomRightRadius","gourmet__pro__info__p2__menu__item","borderTop","borderBottom","gourmet__pro__info__p2__info","animation","gourmet__pro__info__p2__info__ccc","gourmet__pro__info__p2__c__m","paddingLeft","paddingRight","gourmet__pro__info__p2__item__m","borderLeft","borderRight","gourmet__pro__info__p2__info__ccc__m","gourmet__pro__info__p2__info__title__m","gourmet__pro__info__p2__info__img__m","gourmet__pro__info__p2__info__des__m","informations","setInformations","currentInfo","setCurrentInfo","informRef","info","classList","remove","add","changeCurrentInfo","JSON","parse","stringify","openInfoM","tiles","link","SlidingRecipeTiles","gourmet__pro__sliding__recipe","lineHeight","visibility","gourmet__pro__sliding__recipe__c","gourmet__pro__sliding__recipe__title","alignItems","marginRight","gourmet__pro__sliding__recipe__tiles","gourmet__pro__sliding__recipe__tile__c","gourmet__pro__sliding__recipe__tile","content","sliderRef","slickPrev","slickNext","speed","infinite","slidesToShow","slidesToScroll","responsive","breakpoint","settings","tile","to","differences","img2","DifferenceInfoPanel","gourmet__pro__difference","gourmet__pro__difference__items","gourmet__pro__difference__item","gourmet__pro__difference__icon","gourmet__pro__difference__title","gourmet__pro__difference__contetns","gourmet__pro__difference__contetns__item","gourmet__pro__difference__contetns__bg","gourmet__pro__difference__contetns__des","gourmet__pro__difference__contetns__des__c","gourmet__pro__difference__contetns__title","gourmet__pro__difference__contetns__des__des","differenceItem","setDifferenceItem","difference","requiredMark","hasRequiredValidator","text","toFieldName","getLabelAsString","isExternalLink","indexOf","getLinkFromElement","linkEl","closest","getAttribute","getLinkInfo","origin","location","currentPath","pathname","linkFiltered","replace","linkLower","toLowerCase","isExternal","isHash","isTel","isMailTo","url","path","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","getFolderPath","parentDepth","slice","join","toQueryString","params","Object","keys","encodeURIComponent","getYoutubeId","undefined","getSlug","getWebUrl","schema","getErrors","result","forEach","err","push","errorMessage","getErrorMessage","convertToObject","array","reduce","obj","item","convertToKeyValues","moveItem","list","fromIndex","toIndex","splice","removed","removeItem","insertItem","find","fn","findIndex","contains","distinct","comparer","filtered","sum","total","equal","list1","list2","found","j","caseInsensitiveCompare","a","b","localeCompare","compareIgnoreEmpty","asc","isNaN","addDays","date","days","Date","setDate","getDate","formatDate","dateObj","formatStr","toDate","format","formatYYYYMMDDToday","dd","mm","getMonth","yyyy","getFullYear","formatYYYYMMDD","formatDDMMYYYY","parseDate","parseISO","toDateTime","dateStr","isValidDate","d","bgUrl","imageUrl","encodeURI","decodeURI","bgUrlStyle","screenWidth","documentElement","clientWidth","screenHeight","innerHeight","clientHeight","outerWidth","offsetWidth","outerHeight","hasClass","match","RegExp","addClass","removeClass","reg","toggleClass","status","scrollTo","selector","duration","delay","findElement","offset","elementOffset","gsap","ease","querySelectorOrNull","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElementInViewport","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isNumeric","num","capitalize","expression","charAt","toUpperCase","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","parts","toString","ScrollToPlugin","formatNumber","round","toTelephoneNumber","like","search","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","getImageSetPath","setId","getPathDetails","baseFolder","setIds","lastFolder","classNames","form","ui","money","object","media","isMobile","env","resourceBase","fullUrl","baseOrigin","getAlternates","alternates","hreflang","href","isNZ","locale","coreUtils","findValidator","validate","disabled","defaultOpt","continueToValidate","getValidatorOptions","role","initialState","page","menu","popup","history","reducer","state","action","payload","Error","StoreContext","createContext","StoreProvider","useReducer","dispatch","Provider","useStore","useContext","findControl","controlNameOrIndex","root","controls","findControlTraverse","controlName","findControlById","findControlByIdTraverse","getValue","getValueTraverse","helperFns","getFilesTraverse","getKeyValueTraverse","keyValue","controlType","findIndexById","this","abstractControl","controlObject","validators","controlOptions","touched","group","controlArray","ctrl","disableValidators","formModelHelper","parent","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","min","Email","PastDate","PastDateNullAllowed","Length","validateControl","error","TextInput","forceUsePlaceholder","usePlaceholder","placeHolder","valueStr","prependText","onChange","onKeyDown","onBlur","autoComplete","placeholder","optionValue","RadioListInput","options","helpLabelText","option","inline","TextareaInput","textAreaRef","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","disableAutoHeight","h","scrollHeight","minHeight","rows","values","includes","DateSeparateInput","thisYear","year","setYear","month","setMonth","day","setDay","handleChangeInner","months","selectStyle","fromYear","recentYear","handleChangeDay","handleChangeMonth","m","handleChangeYear","y","FileInput","Components","CheckboxInput","linkText","CheckboxListInput","SelectInput","mainCategory","filter","selected","defaultValue","HiddenInput","renderControlDirect","Component","getControl","renderControl","formRoot","nameOrIndex","validateTraverse","errorsFromControl","errorsFromSub","useForm","initialFormModel","formModel","setFormModel","template","onControlChanged","controlFromEvent","getControlValue","onBeforeUpdateValue","validateGroup","successHandler","errorHandler","preventDefault","formValidate","model","reset","controlRenderer","validateForm","config","siteConfig","cssEmotion","facepaint","bp","mqMin","mqMax","matches","mediaQuery","matchMedia","isMin","isMax","overlay","Element","prototype","msMatchesSelector","webkitMatchesSelector","parentElement","parentNode","nodeType","NotFound","props","debugInfo","reload","refreshPage","back","goBack","pageUrl","loadFrom","AppVersion","checkStatus","setCheckStatus","ver","updateDate","enableForceUpdate","updateSW","then","disableForceUpdate","button","AppVersionPage","Button","btnStyle","buttonStyle","aria-hidden","ErrorMessage","summaryMessage","ErrorPopup","messages","inx","SvgNarrowRight","iconColors","primary","secondary","SvgLoading","viewBox","preserveAspectRatio","cx","cy","r","fill","stroke","strokeWidth","attributeName","repeatCount","dur","keyTimes","keySplines","calcMode","begin","Loading","loaded","setLoaded","loading","opacity","timer","clearTimeout","useApi","response","setResponse","setErrors","setStatus","request","setRequest","apiNetJwt","res","ok","json","statusText","fetchData","hasErrors","containsErrorMessage","msg","finding","some","addErrors","errs","done","send","sendRaw","httpOptionFn","args","setResult","usePost","formDataFn","data","method","post","headers","sending","sendFormData","useGet","get","MediaQueryStatus","isProd","MetaTag","seoData","assign","keywords","language","country","faceBookDomainVerifi","heroImageUrl","siteName","rel","canonical","MAX","MIN","getScrollProgress","scroll","scrollY","progress","boundsTop","viewport","bounds","setClass","pr","range","prVal","removeTransform","getScreenSize","useInstagram","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","loadJs","defaultSettings","cutoffPadding","ParallaxData","screenSize","panels","imageRatio","panelHeight","elements","timeoutId","useParallax","handleScroll","element","au","calculated","fromTop","toTop","backgroundPositionY","init","useLayoutEffect","addEventListener","removeEventListener","cnt","panel","autoPanelHeight","parseFloat","shadowHeight","shadowWidth","baseHeight","useRouter","useParams","useLocation","useHistory","useRouteMatch","useMemo","navigate","Redirect","hash","query","queryString","useHistoryStore","loc","setHistory","last","handleElementLink","externalHandler","linkInfo","handled","SiteLink","other","goToLink","stopPropagation","flexBasis","tileImage","mixin","tileIcon","InstagramFeed","apiBase","Feeds","posts","numOfPost","xs","sm","md","lg","xl","xxl","displayingPosts","Feed","YoutubeEmbed","videoId","yt","allow","frameBorder","allowFullScreen","loadApi","onApiReady","YT","tag","onYouTubeIframeAPIReady","firstScriptTag","getElementsByTagName","insertBefore","thumbnailMax","getYoutubeCode","findItem","items","itemTypeCode","defaultVal","payloads","findItemByTypeCode","pageData","sections","BannerPanel","subItems","cmsOption","heightSet","cmsUtils","slides","subItem","Item","itemId","dots","autoplaySpeed","fade","autoplay","cssClass","anchorName","data-cms-item-id","isCmsEdit","BannerItem","captionTitle","linkUrl","titlePanel","linkOverlay","Panel","backgroundTile","bgTheme","subItemsElts","data-svg-origin","Html","htmlBlock","block","embedDataList","embed","ReactDOM","render","codeType","code","replaceEmbedCodes","buttons","restructureButton","data-cms-html","processed","_href","setAttribute","handleClick","span","innerHTML","TestimonialPanel","itemElt","TestimonialItem","bottomText","ImagePanel","pageOptions","imagePath","data-pxh","marginLR","marginTB","bpPer","holder","marginBottom","tilesSlider","flexGrow","flexShrink","tileSlider","tileBg","fontFamily","desc","readMore","readMoreBtn","textDecoration","linkWrapper","rgba","textTransform","PageTiles","useSlider","sliderStyle","styleBig","styleRecipe","styleDefault","pages","pagesSerialized","getPages","pageTileElts","TileBig","disableLink","TileRecipe","Tile","pageTitle","tileDesc","SingleBanner","alignV","stateList","hasGTM","dataLayer","pageView","pageOpt","event","sendEvent","eventName","sendGAEvent","category","Contact","fields","modelNumber","phone","email","enquiry","fb","getContactModel","emailReceiver","sendingStatus","setSendingStatus","gtm","contactEmail","ContactForm","YoutubeBannerMobilePopup","youtubeBannerRef","playerStatus","setPlayerStatus","playerSize","setPlayerSize","ytPlayer","setYtPlayer","muted","setMuted","countPlayedRef","popupOpened","setPopupOpened","video","videoLinkOrId","playerId","posterImageUrl","mobileImageUrl","canPlayVideo","loadVideo","container","containerSize","w","size","getSize","player","Player","events","PlayerState","ENDED","countPlayed","playVideo","mute","resized","debounce","canPlay","Fragment","pauseVideo","unMute","channel","isOpen","onClose","YoutubeBannerPanel","products","productCol","SearchResult","useBV","showReview","keyword","q","productsOn","productStatus","ProductList","PageList","tileListStyle","product","productCode","tileStyle","TextWithJavScript","javaScriptCode","substring","nonjavaScriptCode","javaScriptTopCode","javaScriptInsideCode","script","_src","async","defer","_functionName","functionName","onload","productLink","border","tileLink","prdImage","bg","price","ProductTiles","productThumbnail","productUrl","Trending","trendingNow","results","searchResult","productList","row1","row1Col1","row1Col2","row1Col3","row2","row2Col","row3","row3Col","categoryImgWrapper","categoryImg","ProductCategory","screen","setScreen","searchParam","categoryImageUrl","totalCnt","ProductTile","useFullHeight","restProducts","mobileStyle","WhereToBuyList","Stores","stores","store","storeCode","storeUrl","buyOnline","iconPath","storeName","Warranty","lazy","WarrantyLazy","fallback","step","navs","nav","navCurrent","navFilled","navClickable","joinForm","stepsWrapper","stepCurrent","stepPrev","stepNext","stepLast","arrow","arrowPrev","arrowNext","Join","model1","firstName","lastName","form1","model2","mobile","getFormDataStep2","form2","model3","dob","postcode","getFormDataStep3","form3","model5","interestList","interests","getFormDataStep5","form5","navEl","stepStyle","next","onSubmit","getSelection","productName","stepView","Step1","Step2","Step3","Step5","Step6","selection","SocialLinks","data-widget","AmbassadorForm","favouriteProduct","reason","website","websiteVisitor","instagram","instagramAuFollowers","instagramNzFollowers","facebook","facebookAuFollowers","facebookNzFollowers","youtube","youtubeAuFollowers","youtubeNzFollowers","tiktok","tiktokAuFollowers","tiktokNzFollowers","Code","codeJson","BlogPosts","numOfTileLines","parseInt","tilesPerLine","tilesToShow","setTilesToShow","showMore","BlogPostTitle","postDate","VideoHolder","video__embed__video__bg","video__embed__video","YoutubeEmbedPopupV2","posterUrl","popupIndex","setPopupIndex","openVideo","sources","frameborder","allowfullscreen","autoPlay","loop","playsInline","VideoItem","youtubeCode","posterFrameUrl","captionTitleYoutube","shortDesc","posterFrameUrlType","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","ExpandableHtml","setOpen","buttonTitle","iconOpen","iconClosed","panelCollapsed","panelOpen","exTextItem","ExpandablePanel","data-anchor-status","data-cms-item-anchor","data-cms-anchor","Carousel","CarouselItem","PrintShare","shareUrl","bannerUrl","banner","singleBanner","getBanner","print","EmailShareButton","EmailIcon","FacebookShareButton","FacebookIcon","ksjb__page__menu__bar","menu__bar","bar__item","bar__item__title","bar__item__line","KsjbPageMenuBar","curruentPosition","setCurruentPosition","curruentPositionMemo","rectVideoPanel","rectAboutPanel","rectRecipesPanel","rectQuizPanel","rectRetailersPanel","ksjb__page__carousel","carousel__item","carousel__item__cation","carousel__1__item","carousel__2__item","KsjbPageCarousel","carouselItems","ksjb__page__quiz__panel","quiz__panel__wave","m_floating_carrot","floating_spinach_below","m_floating_strawberry","ksjb__page__quiz__inner__panel","panel__container","step__title__container","row__style","alignContent","quiz__panel__title","letterSpacing","borderRadius","quiz__panel__img","quiz__detail__text1","quiz__detail__text2","quiz__detail__answers","quiz__detail__answer","quiz__detail__answer__des","quiz__detail__arrow","pointerEvents","submit__button","result__step","result__step__detail","result__step__social__v2","result__step__social","outline","result__step__bottom__text__v2","result__step__bottom__text","QuizPanel","curruentStep","setCurruentStep","step1","step2","step3","step4","step5","step6","answerResult","setAnswerResult","baseShareUrl","curruentStepMemo","answerResultMemo","StepTitle","stepAnswer","Step4","ResultStep","resetQuiz","QuizDetails","answers","answerId","answerIndex","quizDes","text1","text2","stepId","c","resultMemo","mArray","resultId","point","sort","_result","title2","imgText","des","video__embed__container","video__embed__text","VideoEmbed","poster","data-bv-show","data-bv-seo","data-bv-product-id","priceText","RecipeRelProducts","recipeRelatedProducts","relProductsForRecipe","PageMemo","memo","alterPageData","sectionItems","section","Section","sectionName","getMetaTag","pageTypeCode","prevProps","nextProps","ViewPage","pageLoaded","setPageLoaded","setData","redirectTo","CmsRadioSender","controller","cloned","postMessage","htmlChanges","sendMessageToParent","returnTo","html","CmsRadioReceiver","self","selectItem","mediaSelectedCKEditor","getAllDirtyHtml","sender","returnAllDirtyHtml","getHtml","returnHtml","tools","callFunction","funcNum","selectedPath","selectItemFromController","CmsHtmlEditor","cmsEndpoint","ckeditorConfig","startupFocus","filebrowserBrowseUrl","filebrowserImageBrowseUrl","extraPlugins","toolbar","groups","extraAllowedContent","ckeditorStylesSet","attributes","$editor","CKEDITOR","disableAutoInline","editor","stylesSet","on","evt","ed","markDirtyHtml","instances","cmsCurrentEditor","getData","destroy","CmsPageController","viewOnly","receiver","htmlEditor","$","initGlobalVars","prop","off","attr","is","ctrlKey","which","saveAllDirtyHtml","$item","fromController","doubleclicked","cke_top","closeEditingItem","removeAttr","depth","showHtmlEditor","selectControllerItem","openEdit","editableParent","parents","first","close","show","extend","htmleditor","getAnchors","anchors","each","htmlbody","floor","animate","$section","getCurrentHtml","ItemId","SectionId","Content","itemid","formvals","cms_replace_item_html","EditPage","cmsViewMode","publishVer","editVer","pageId","cmsPageController","_class","catch","SearchBar","onCloseMenu","setKeyword","NavBar","currentLocation","menuItemElts","MenuItem","subMenuOpened","setSubMenuOpened","SubMenuItem","toggleSubmenu","BackButton","rs","barW","barH","space","line","transitionProperty","transitionDuration","transitionDelay","transitionTimingFunction","font","buttonScrolled","hamburger","line1","line2","line3","lineActive1","lineActive2","lineActive3","Hamburger","opened","toggleMenu","scrolled","aria-label","topScrolled","logo","logoImg","logoImgScrolled","buyNow","buyNowScrolled","TopHeader","menuOpened","setMenuOpened","setScrolled","useScrollPosition","prevPos","currPos","behavior","footerWrapper","footer","socialAndLinks","social","socialIcon","links","Footer","SocialIcons","BottomDrawer","defaults","slider","currentTranslateY","inititialised","tsEventHandled","hammer","Hammer","Manager","Pan","direction","DIRECTION_VERTICAL","threshold","switch","deltaY","moveDeltaTmp","initEvent","bar","delta","getBaseY","move","targetY","getTargetY","fromTo","barHeight","dy","BottomDock","isCurrent","linkElts","iconHover","bottomMenu","instagrams","topPadding","qa","qaQuestion","qaAnswer","Breadcrumb","breadcrumb","containsAirPurificationLink","ViewPartial","InstaEmbedByLink","instagramCode","TiktokEmbedByLink","setCode","titok__embed__container","titok__embed__container__error","titok__embed__watch__icon","titok__embed__watch__icon__text","titok__embed__watch__icon__text__error","portal__contents","tiktok__item__show","abortController","AbortController","signal","abort","TiktokItem","styleItem","thumbnail_url","setShow","existingScript","vvv","abc","setInterval","clearInterval","ProductView","slug","Product","mainPhoto","productImages","allPhotos","packagePhotos","isPackage","popupImages","currentTab","setCurrentTab","heroImage","setHeroImage","toggler","setToggler","setIsMobile","bv","onShowReview","useCallback","showTab","openPopupImage","tab","forceToScroll","anchor","photo","youtubeCheck","initialSlide","displayTabs","whereToBuys","seeMoreSection","faqSection","tabs","tabContents","DetailsTab","SeeMoreTab","FaqTab","tabPanels","discoverMoreLinks","discoverMoreSection","itemValue","barcodeCleaned","barcode","sourceIndex","itemScope","itemType","itemProp","intro","youtubeUrl","recipeBookletLink","RelatedProducts","relatedProducts","metaDesc","metaImage","ItemList","detailSection","hasWarranty","techSection","specSection","useSparePartInstruction","warranty","bookletLink","Booklet","RecipeBooklet","blogs","pre","tiktoks","empty","hasInstaOrBlog","linkType","Empty","ItemView","instagramUseFirst","instagramEmbed","PageTile","question","answer","spec","CommonVideoPopup","setSources","onOpen","AppRouteChanged","parallax","GourmetPro","GourmetProLoading","AppLayout","checkUpdate","App","isLocalhost","Boolean","hostname","serviceUpdateCheckerInterval","registerValidSW","swUrl","navigator","serviceWorker","register","updateViaCache","registration","scope","waiting","update","preventDevToolsReloadLoop","getRegistration","active","oldSw","ev","newSw","onupdatefound","installing","installingWorker","onstatechange","onUpdate","onSuccess","URL","contentType","ready","unregister","checkValidServiceWorker","forceUpdateFlagged","markUpdate","localStorage","setItem","getItem","unmarkUpdate","hasUpdate","defaultHolder","promises","scripts","loadScript","Promise","all","loadedJs","holder_","forceToReload","resolve","reject","networkLoaded","existing","onerror","prd","bvClientId","bvSiteId","bvEnv","bvLocale","reviewClicked","bvCallback","BV","reviews","pixel","trackConversion","sendTransactionEvent","orderId","trackTransaction","ms","_","apply","arguments","getLocale","getCountry","siteCode","GATSBY_BASEURL","getBaseUrl","instagramClientAccessToken","REACT_APP_COUNTRY_LOCALE"],"mappings":"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","file":"static/js/main.f64303b4.chunk.js","sourcesContent":["const overloading = {\n breakpointNames: ['sm', 'md', 'lg', 'xl', 'xxl'],\n breakpoints: [576, 768, 992, 1200, 1600]\n}\n\nconst variables = {\n familyBase: '\"Montserrat\",sans-serif',\n familyHeader: '\"Montserrat\",serif',\n \n primaryColor: '#97c424',\n fontColor: '#706f6f',\n bgColor: '#f1eee9',\n greenColor2 : '#9bb652',\n linkHoverColor: '#769528',\n\n ...overloading\n}\n\nexport default variables;\n","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nimport 'filepond-polyfill';\r\n\r\n// Import React FilePond\r\nimport { FilePond, registerPlugin } from \"react-filepond\";\r\n\r\n// Import FilePond styles\r\nimport \"filepond/dist/filepond.min.css\";\r\n\r\n// Import the plugin code\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\nimport FilePondPluginImageTransform from 'filepond-plugin-image-transform';\r\n\r\n// Register the plugin\r\nregisterPlugin(FilePondPluginFileValidateSize);\r\nregisterPlugin(FilePondPluginFileValidateType);\r\nregisterPlugin(FilePondPluginImageResize);\r\nregisterPlugin(FilePondPluginImageTransform);\r\n\r\nfunction FilePondUploader({ control, handleChange, formOption }) {\r\n const [files, setFiles] = React.useState([])\r\n const { name, label, errors, style, filePond = {}, helpText, attrs } = control;\r\n //console.log(filePond)\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n\r\n\r\n const ref = React.useRef(null);\r\n function handleInit() {\r\n console.log(ref.current);\r\n }\r\n\r\n control.customValueFn = (control) => {\r\n if (!ref.current) return [];\r\n return ref.current.getFiles().map(x => x.serverId);\r\n }\r\n\r\n const onUpdated = fileItems => {\r\n //console.log(fileItems, JSON.stringify(fileItems))\r\n // Set currently active file objects to this.state\r\n const newVal = fileItems.map(x => x.serverId)\r\n //console.log(newVal)\r\n handleChange({\r\n persist: () => { },\r\n target: { name: name, value: newVal, checked: false }\r\n }, control)\r\n setFiles(fileItems.map(fileItem => fileItem.file));\r\n }\r\n\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n\r\n handleInit()}\r\n onupdatefiles={onUpdated}\r\n labelIdle={filePond.labelIdle || `Drag & Drop your files or Browse `}\r\n acceptedFileTypes={filePond.acceptedFileTypes || []}\r\n allowImageResize={filePond.allowImageResize || false}\r\n imageResizeTargetWidth={filePond.imageResizeTargetWidth || 2560}\r\n imageResizeUpscale={filePond.imageResizeUpscale || false}\r\n {...attrs}\r\n />\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n\r\n )\r\n}\r\n\r\nexport default FilePondUploader;","//import HtmlInput from 'lib/form/controls/HtmlInput--ckeditor';\nimport FilePondUploader from '../lib/form/controls/FilePond';\n\nexport function getSiteControl(control, formOption) {\n // if (control.type === 'html')\n // return HtmlInput;\n if (control.type === 'filePond')\n return FilePondUploader;\n return null;\n}\n\n","export { fb, validators, formModelHelper, validatorHelper, useForm, useStep } from '../lib/form';\nexport { getSiteControl } from './controls';","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Required(message = null, opt = null) {\r\n return createValidator('required', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return isEmpty(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' is required.')) : null\r\n })\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import React from 'react';\n\nexport function useStep(initialSteps){\n const [steps, setSteps] = React.useState(initialSteps);\n const [currentStep, setCurrentStep] = React.useState(0);\n const [lastStep, setLastStep] = React.useState(0);\n\n const moveNext = () => {\n moveTo(currentStep < steps.length ? currentStep + 1 : currentStep)\n }\n\n const movePrev = () => {\n moveTo(currentStep > 0 ? currentStep - 1 : 0)\n }\n\n const moveTo = (index) => {\n if (!canGo(index)) return\n setLastStep(currentStep)\n setCurrentStep(index)\n // if (!utils.ui.isElementInViewport(navEl.current)) {\n // utils.ui.scrollTo(navEl.current)\n // }\n }\n\n const markAsFilled = (index) => {\n if (!steps[index]) return;\n steps[index].filled = true;\n setSteps(steps);\n }\n \n function canGo(index) {\n if (steps[index] && steps[index].filled) return true;\n const maxIndexFilled = Math.max(...steps.map((x, i) => x.filled ? i : -1));\n return index <= maxIndexFilled + 1\n }\n\n function canGoNext() {\n return currentStep < steps.length && canGo(currentStep + 1)\n }\n\n function canGoPrev() {\n return currentStep > 0 && canGo(currentStep - 1)\n }\n\n return { steps, setSteps, currentStep, lastStep, moveTo, moveNext, movePrev, markAsFilled, canGo, canGoNext, canGoPrev}\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n//import { Fragment } from \"react\";\nimport { useState, useEffect, Fragment, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { MdClose } from \"react-icons/md\";\nimport { IoIosArrowDropleft, IoIosArrowDropright } from \"react-icons/io\";\nimport { BsDot } from \"react-icons/bs\";\nimport { mq } from \"../../../cssInJs\";\n\nfunction Portal({ children }) {\n const [el] = useState(document.createElement(\"div\"));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\nconst companions = [\n {\n id: 1,\n title: \"Tri-Steam Technology\",\n icon: \"/assets/gourmetpro/tri_steam_technology_round_icon.png\",\n icon2: \"/assets/gourmetpro/tri_steam_technology_icon.png\",\n img: \"/assets/gourmetpro/tri-steam-technology.jpg\",\n description:\n \"Steam cooking in an oven is a fantastic way to cook healthy and delicious meals. By cooking with steam, your food retains its natural moisture, flavour, and nutrients. The Gourmet Pro is designed with 3 steam ports to distribute steam evenly throughout the cooking chamber, ensuring that your dishes are cooked to perfection. Unlike conventional ovens that use dry heat, the steam gently envelops the food, which helps it cook more evenly and prevents it from drying out. This even distribution of steam ensures that every part of your dish, from top to bottom, is cooked uniformly. Additionally, the moist environment created by steam cooking helps to increase tenderness, making meat and fish dishes melt-in-your-mouth delicious.\",\n },\n {\n id: 2,\n title: \"Fast Cooking Times\",\n icon: \"/assets/gourmetpro/fast_cooking_times_round_ icon.png\",\n icon2: \"/assets/gourmetpro/fast_cooking_times_icon.png\",\n img: \"/assets/gourmetpro/fast_cooking-time.jpg\",\n description:\n \"The Gourmet Pro is perfect for anyone looking to save time while cooking. This oven has a faster heat up time than conventional ovens, reducing preheating time. In addition, the powerful heating elements and high-speed convection fan work together to circulate hot air, ensuring that food is cooked evenly and up to 40% faster. It’s no wonder that benchtop ovens have become a popular choice for those seeking to save time in the kitchen.\",\n },\n {\n id: 3,\n title: \"Set & Forget Pre-sets\",\n icon: \"/assets/gourmetpro/set_forget_pre_sets_round_ icon.png\",\n icon2: \"/assets/gourmetpro/set_forget_pre_sets_icon.png\",\n img: \"/assets/gourmetpro/set_forget_pre_sets.jpg\",\n description: \"The pre-set menu is especially helpful for busy individuals or families who are juggling multiple tasks and don't have the time to closely monitor their cooking. With a simple touch of a button, choose from 20 pre-set functions for the type of dish you're preparing, such as baking, roasting air frying or steaming. It's like having a personal chef in your kitchen!\",\n },\n {\n id: 4,\n title: \"Dual Cooking Capabilities\",\n icon: \"/assets/gourmetpro/dual-cook-2-round.png\",\n icon2: \"/assets/gourmetpro/dual-cook-icon.png\",\n img: \"/assets/gourmetpro/dual_cook.jpg\",\n description: \"Combine 2 cooking functions with different temperatures and run them consecutively - ideal for recipes with multiple steps. Make the perfect pork belly by air frying the crackling and then switching to convection bake - and let the oven do the thinking for you!\",\n },\n {\n id: 5,\n title: \"Convenience at Your Fingertips\",\n icon: \"/assets/gourmetpro/convenience_at_your_fingertips_round_icon.png\",\n icon2: \"/assets/gourmetpro/convenience_at_your_fingertips_icon.png\",\n img: \"/assets/gourmetpro/convenience_at_your_fingertips.jpg\",\n description: \"Gourmet Pro not only offers convenient cooking features but also adds a touch of modern sophistication to your kitchen. With a sleek touch screen control panel, your combi-oven becomes a stylish and user-friendly appliance. The touch screen control panel on a bench top oven brings convenience right at your fingertips. Easily navigate through the oven's settings and features with a simple touch. The intuitive interface makes it easy to select cooking modes, adjust temperature and time, and explore additional functions like convection or steam settings. The touch screen control panel simplifies the cooking process by offering a seamless and responsive user experience.\",\n },\n {\n id: 6,\n title: \"Effortless Steam Cleaning\",\n icon: \"/assets/gourmetpro/effortless-steam-cleaning-round-icon.png\",\n icon2: \"/assets/gourmetpro/effortletless-steam-cleaning.png\",\n img: \"/assets/gourmetpro/effortless-steam-cleaning.jpg\",\n description: \"The Gourmet Pro takes the hassle out of post-cooking cleanup. With the power of steam, it effortlessly dissolves and loosens even the toughest food residues and grease, so you can simply wipe clean.\",\n },\n {\n id: 7,\n title: \"Large Capacity, Small Footprint\",\n icon: \"/assets/gourmetpro/large-capacity-small-footprint-round-icon.png\",\n icon2: \"/assets/gourmetpro/large-capacity-small-footprint.png\",\n img: \"/assets/gourmetpro/large-capacity-small-footprint .jpg\",\n description: \"Don't let the sleek, compact design fool you. This oven has a spacious cooking capacity allowing you the freedom to cook a chicken up to 2.5kg and a 30cm pizza. You will be amazed at how much you can cook in one go, perfect for entertaining guests or preparing the family dinner.\",\n }\n];\n\nexport function CookingCompanion() {\n const s = getStyle();\n const [openPopup, setOpenPopup] = useState(false);\n const [current, setCurrent] = useState();\n const gourmetItemsRef = useRef(null);\n //const dotsRef = useRef(null);\n\n function openCookingCompanions(index) {\n //setCurrent(companionId);\n setOpenPopup(true);\n\n if (window.innerWidth >= 1200) {\n setTimeout(() => {\n const _d = (window.innerWidth - (1152 + 48)) / 2;\n gourmetItemsRef.current.style.transform = `translateX(${_d}px)`;\n }, 100);\n\n setTimeout(() => {\n gourmetItemsRef.current.style.display = \"flex\";\n }, 150);\n\n setTimeout(() => {\n const _d = (window.innerWidth - (1152 + 48)) / 2 - index * (1152 + 48);\n gourmetItemsRef.current.style.transform = `translateX(${_d}px)`;\n }, 200);\n } else {\n setTimeout(() => {\n gourmetItemsRef.current.style.transform = `translateX(0%)`;\n }, 100);\n\n setTimeout(() => {\n gourmetItemsRef.current.style.display = \"flex\";\n\n if (window.innerWidth <= 768) {\n const _gourmetItems = gourmetItemsRef.current.querySelectorAll('.gourmet__pro__cooking__item');\n const _height = _gourmetItems[0].querySelector(\".gourmet__pro__cooking__bg\").offsetHeight;\n document.getElementById(\"gourmet__pro__cooking__arrow__p\").style.top = (_height / 2) + \"px\";\n document.getElementById(\"gourmet__pro__cooking__arrow__n\").style.top = (_height / 2) + \"px\";\n //document.getElementById(\"gourmet__pro__cooking__dots\").style.top = (_height - 20) + \"px\";\n document.getElementById(\"gourmet__pro__cooking__dots\").style.top = \"unset\";\n document.getElementById(\"gourmet__pro__cooking__dots\").style.bottom = \"-25px\";\n }\n\n }, 150);\n\n setTimeout(() => {\n const _d = -(index * 100);\n gourmetItemsRef.current.style.transform = `translateX(${_d}%)`;\n }, 200);\n }\n\n setCurrent(index);\n document.body.style.overflow = \"hidden\";\n }\n\n function prev() {\n if (current === 0) {\n return;\n }\n\n const _current = current - 1;\n\n if (window.innerWidth >= 1200) {\n const _d = (window.innerWidth - (1152 + 48)) / 2 - _current * (1152 + 48);\n gourmetItemsRef.current.style.transform = `translateX(${_d}px)`;\n } else {\n const _d = -(_current * 100);\n gourmetItemsRef.current.style.transform = `translateX(${_d}%)`;\n }\n\n setCurrent(_current);\n }\n\n function next() {\n if (current === 6) {\n return;\n }\n\n const _current = current + 1;\n\n if (window.innerWidth >= 1200) {\n const _d = (window.innerWidth - (1152 + 48)) / 2 - _current * (1152 + 48);\n gourmetItemsRef.current.style.transform = `translateX(${_d}px)`;\n }\n else {\n const _d = -(_current * 100);\n gourmetItemsRef.current.style.transform = `translateX(${_d}%)`;\n }\n\n setCurrent(_current);\n }\n\n function closeCookingCompanions() {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }\n\n return (\n \n {openPopup && (\n \n
\n \n \n
\n \n\n \n\n
\n\n \n {companions.map((companion, index) => {\n return (\n \n
\n
\n
\n \n
\n
\n {companion.title}\n
\n
\n {companion.description}\n
\n
\n \n );\n })}\n\n \n\n \n \n \n\n \n \n \n\n
\n {\n companions.map((companion, index) => {\n return (\n
\n \n
\n )\n })\n }\n
\n \n \n\n
\n )}\n\n \n
\n
\n {companions.map((companion, index) => {\n return (\n \n {\n openCookingCompanions(index);\n }}\n >\n \n
\n \n {companion.title}\n
\n \n );\n })}\n \n \n \n
\n );\n}\n\nfunction getStyle() {\n const style = {\n gpcc__buttons: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: 'center',\n maxWidth : '1300px',\n margin : 'auto'\n },\n gpcc__button: mq({\n flex: [\"1 0 100%\", null, 'unset', null, '14.2%'],\n maxWidth: [\"100%\", null, \"unset\", null, '14.2%'],\n cursor: \"pointer\",\n //paddingLeft: '0.5rem',\n //paddingRight: '0.5rem',\n padding: \"0.5rem\",\n '&:hover': {\n '.gpcc__button__icon img': {\n transform: 'scale(1.05)'\n },\n '.gpcc__button__title': {\n //textDecoration: 'underline'\n color: '#97c424'\n }\n }\n }),\n\n gpcc__button__icon: {\n //paddingLeft: '1rem',\n //paddingRight: '1rem',\n maxWidth: \"124px\",\n maxHeight: \"124px\",\n margin: \"auto\",\n //overflow: 'hidden',\n 'img': {\n transition: 'all 0.3s ease-in-out'\n }\n },\n\n gpcc__button__title: {\n fontWeight: 700,\n //maxWidth: '180px',\n margin: \"auto\",\n marginTop: \"1rem\",\n maxWidth: \"140px\",\n textAlign: \"center\",\n },\n\n portal__background: {\n backgroundColor: \"rgba(0,0,0,0.8)\",\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: \"9998\",\n },\n\n portal__close__btn: {\n position: \"fixed\",\n zIndex: \"9999\",\n right: 0,\n top: 0,\n margin: \"1rem\",\n cursor: \"pointer\",\n svg: {\n width: \"30px\",\n height: \"30px\",\n color: \"white\",\n },\n },\n\n gourmet__pro__cooking__contents: {\n position: \"fixed\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 9999,\n width: \"100%\",\n },\n\n gourmet__pro__cooking__contents__inner: {\n position: 'relative'\n },\n\n gourmet__pro__cooking__items: {\n display: \"none\",\n transition: \"all 1s cubic-bezier(0.22, 0.61, 0.36, 1) 0s\",\n //position: 'relative'\n },\n\n gourmet__pro__cooking__item: mq({\n display: \"flex\",\n flexWrap: \"wrap\",\n maxWidth: \"1152px\",\n flexDirection: ['column', null, 'row'],\n flex: \"1 0 100%\",\n marginLeft: [\"unset\", null, null, null, \"3rem\"],\n padding: [\"1rem\", null, null, null, \"unset\"],\n\n \"&:first-of-type\": {\n marginLeft: \"0rem\",\n },\n\n \".gourmet__pro__cooking__bg\": mq({\n flex: [\"0 0 auto\", null, \"1 0 40%\"],\n maxWidth: [\"100%\", null, \"40%\"],\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n paddingTop: [\"56.25%\", null, \"unset\"],\n }),\n \".gourmet__pro__cooking__des\": mq({\n flex: [\"1 0 auto\", null, \"1 0 60%\"],\n maxWidth: [\"100%\", null, \"60%\"],\n padding: [\"1rem\", null, \"3rem\"],\n backgroundColor: \"white\",\n \".gourmet__pro__cooking__des__icon\": mq({\n maxWidth: [\"30px\", null, \"50px\"],\n }),\n \".gourmet__pro__cooking__des__title\": {\n fontWeight: 700,\n color: \"black\",\n marginTop: \"1rem\",\n fontSize: \"1.2rem\",\n },\n \".gourmet__pro__cooking__des__des\": {\n marginTop: \"1rem\",\n fontSize: \"0.8rem\",\n },\n }),\n }),\n\n gourmet__pro__cooking__arrow__p: mq({\n position: \"absolute\",\n left: \"10px\",\n top: ['26.5%', null, '50%'],\n transform: ['unset', null, 'translateY(-50%)'],\n zIndex: 9999,\n cursor: \"pointer\",\n svg: mq({\n width: ['30px', null, \"50px\"],\n height: ['30px', null, \"50px\"]\n //color : 'white'\n }),\n }),\n\n gourmet__pro__cooking__arrow__n: mq({\n position: \"absolute\",\n top: ['26.5%', null, '50%'],\n right: \"10px\",\n transform: ['unset', null, 'translateY(-50%)'],\n zIndex: 9999,\n cursor: \"pointer\",\n svg: {\n width: ['30px', null, \"50px\"],\n height: ['30px', null, \"50px\"]\n //color : 'white'\n },\n }),\n\n gourmet__pro__cooking__dots: mq({\n position: 'fixed',\n top: ['32%', null, '96%'],\n display: 'flex',\n zIndex: 9999,\n left: '50%',\n transform: 'translateX(-50%)',\n }),\n gourmet__pro__cooking__dot: mq({\n padding: ['unset', null, '1rem'],\n 'svg': {\n fontSize: '40px'\n },\n '&.current svg' : {\n color: 'white'\n } \n })\n\n };\n return style;\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport { useState, useRef } from \"react\";\nimport { mq } from '../../../cssInJs';\nimport { IoIosArrowUp } from \"react-icons/io\";\n//import '../scss/index.scss';\n\nconst informationsData = [\n {\n id: 'steam',\n title: \"Steam\",\n img: \"/assets/gourmetpro/steam.jpg\",\n description: \"Achieve moist and flavourful results every time. From vegetables to seafood, steam cooking preserves nutrients and enhances the natural flavours of your food.\",\n open: false\n },\n {\n id: 'airFry',\n title: \"Air Fry\",\n img: \"/assets/gourmetpro/airfry.jpg\",\n description: \"Craving crispy yet healthier meals? The air frying feature delivers delectable golden-brown results without the excess oil. Enjoy guilt-free versions of your favourite fried dishes, such as French fries, chicken wings, and nuggets.\",\n open: false\n },\n {\n id: 'turboRoast',\n title: \"Turbo Roast\",\n img: \"/assets/gourmetpro/turbo-roast.jpg\",\n description: \"Roasting has never been faster with the Gourmet Pro. This feature uses a combination of high speed convection and steam to allow for a high temperature and even heat distribution, giving you succulent, juicy meats.\",\n open: false\n },\n {\n id: 'steamAssist',\n title: \"Steam Assist\",\n img: \"/assets/gourmetpro/steam-assist-2.jpg\",\n description: \"The steam assist function simulates a bakers oven by combining an initial burst of steam with the power of convection cooking for crispy results and soft risen interiors.\",\n open: false\n },\n {\n id: 'convectionBake',\n title: \"Convection Bake\",\n img: \"/assets/gourmetpro/convection-bake.jpg\",\n description: \"This feature allows for even and consistent heat distribution, giving you perfect cakes, pies, and roasted meats. You can count on getting impeccable results every time.\",\n open: false\n },\n {\n id: 'bakeSteam',\n title: \"Bake Steam\",\n img: \"/assets/gourmetpro/bake-steam-2.jpg\",\n description: \"Utilises convection bake and steam for the entire cooking process achieving tender juicy results on the inside, with crisp on the outside\",\n open: false\n },\n {\n id: 'superSteam',\n title: \"Super Steam\",\n img: \"/assets/gourmetpro/super-steam.jpg\",\n description: \"Cook the healthy way, faster and more evenly. This feature adds extra heat to steam cooking, ideal for rice, custards and poultry.\",\n open: false\n },\n {\n id: 'grill',\n title: \"Grill\",\n img: \"/assets/gourmetpro/grill.jpg\",\n description: \"Perfect for open cheese melts, browning lasagne or grilling vegetables.\",\n open: false\n },\n {\n id: 'toast',\n title: \"Toast\",\n img: \"/assets/gourmetpro/toast.jpg\",\n description: \"Toast bread, bagels, English muffins, and more! With the Toast function, you can achieve the perfect level of toasting for your breakfast.\",\n open: false\n },\n {\n id: 'warm',\n title: \"Warm\",\n img: \"/assets/gourmetpro/warm.jpg\",\n description: \"Need to quickly reheat your leftovers to retain original flavour and texture? Use the Warm feature which is perfect for reheating or keeping your dishes warm until it's time to serve. You no longer have to worry about food getting cold before you’re ready to enjoy it.\",\n open: false\n }\n];\n\nexport function InfoPanel2() {\n const s = getStyle();\n const [informations, setInformations] = useState(informationsData);\n const [currentInfo, setCurrentInfo] = useState(informations[0]); \n const informRef = useRef(null);\n \n function changeCurrentInfo(info) {\n //setCurrentInfo(null);\n // setTimeout(() => {\n // setCurrentInfo(info);\n // }, 100);\n\n if (info.id === currentInfo.id) {\n return;\n }\n informRef.current.classList.remove('infor__transition');\n setTimeout(() => {\n setCurrentInfo(info);\n informRef.current.classList.add('infor__transition');\n }, 100);\n }\n\n function openInfoM(index) {\n informations[index].open = !informations[index].open;\n setInformations(JSON.parse(JSON.stringify(informations)));\n }\n\n return (\n
\n
\n
\n {\n informations.map((info, index) => {\n return (\n
{\n changeCurrentInfo(info);\n }}>\n {info.title}\n
\n )\n })\n }\n
\n\n
\n {/* {currentInfo.id} */}\n
\n
{currentInfo.title}
\n
{currentInfo.description}
\n
\n
\n
\n\n
\n {\n informations.map((info, index) => {\n return (\n
\n
{\n openInfoM(index);\n }}>\n {info.title}\n \n
\n
\n
\n {info.title}\n
\n
\n {info.description}\n
\n
\n\n
\n )\n })\n }\n
\n\n
\n )\n}\n\nfunction getStyle() {\n const style = {\n gourmet__pro__info__p2: {\n paddingTop: '3rem',\n paddingBottom: '3rem',\n backgroundColor: 'white'\n },\n gourmet__pro__info__p2__c: mq({\n display: ['none', null, 'flex'],\n maxHeight: '496px'\n }),\n gourmet__pro__info__p2__menu: {\n flex: '1 0 20%',\n maxWidth: '380px',\n minWidth: '236px',\n overflow : 'auto',\n \n '::-webkit-scrollbar' : {\n width: '10px'\n },\n\n '::-webkit-scrollbar-track' : {\n background: '#f1f1f1'\n },\n\n '::-webkit-scrollbar-thumb' : {\n background: '#e2e2e2',\n borderTopRightRadius: '5px',\n borderTopLeftRadius: '5px',\n borderBottomLeftRadius: '5px',\n borderBottomRightRadius: '5px'\n },\n\n '::-webkit-scrollbar-thumb:hover' : {\n background: '#e2e2e2'\n }\n\n \n },\n gourmet__pro__info__p2__menu__item: {\n padding: '1rem 1.5rem',\n //color: 'black',\n borderTop: '1px solid #706F6F',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'all 0.3s ease-in-out',\n fontSize: '1.2rem',\n '&:hover, &.current': {\n backgroundColor: '#97c424',\n color: 'white'\n },\n '&:last-of-type': {\n borderBottom: '1px solid #706F6F',\n }\n },\n gourmet__pro__info__p2__info: {\n //flex: '1 0 80%',\n flex: '1 0 68%',\n maxWidth : '100%',\n position: 'relative',\n overflow: 'hidden',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n marginLeft: '2px',\n '&.infor__transition': {\n animation: 'fadeIn 1s',\n },\n // 'img': {\n // position: 'absolute',\n // top: '50%',\n // left: '50%',\n // transform: 'translate(-50%, -50%)'\n // }\n },\n gourmet__pro__info__p2__info__ccc: {\n position: 'absolute',\n top: '1rem',\n left: '1rem',\n padding: '1rem',\n maxWidth: '370px',\n backgroundColor: 'white',\n '.gourmet__pro__info__p2__info__title': {\n fontSize: '1.2rem',\n fontWeight: 700, \n },\n '.gourmet__pro__info__p2__info__des': {\n marginTop: '0.5rem'\n }\n },\n\n //mobile\n gourmet__pro__info__p2__c__m: mq({\n display: ['block', null, 'none'],\n paddingLeft: '1rem',\n paddingRight: '1rem'\n }),\n gourmet__pro__info__p2__item__m: {\n //color: 'black',\n borderTop: '1px solid #706F6F',\n borderLeft: '1px solid #706F6F',\n borderRight: '1px solid #706F6F',\n '&.warm': {\n borderBottom: '1px solid #706F6F',\n overflow: 'hidden',\n borderBottomLeftRadius : '8px',\n borderBottomRightRadius : '8px'\n },\n },\n\n gourmet__pro__info__p2__info__ccc__m : {\n maxHeight: '0px',\n transition: 'all 0.5s ease-in-out',\n overflow: 'hidden',\n '&.open' : {\n maxHeight: '1000px',\n transition: 'all 0.8s ease-in-out'\n }\n },\n\n gourmet__pro__info__p2__info__title__m: {\n cursor: 'pointer',\n fontWeight: 700,\n fontSize: '1rem',\n padding: '1rem 1.5rem',\n position : 'relative',\n '&:hover': {\n backgroundColor: '#97c424',\n color: 'white'\n },\n '&.warm': {\n //borderBottom: '1px solid #706F6F',\n },\n 'svg' : {\n position : 'absolute',\n top: '50%',\n right: '10px',\n transform: 'translateY(-50%) rotate(180deg)',\n width: '20px',\n height: '20px',\n transition: 'all 0.3s ease-in-out'\n },\n '&.open svg' : {\n transform: 'translateY(-50%) rotate(0deg)',\n }\n },\n gourmet__pro__info__p2__info__img__m: {\n //marginTop: '2px'\n },\n\n gourmet__pro__info__p2__info__des__m: mq({\n padding: '1rem',\n fontSize: '0.85rem'\n })\n\n }\n\n return style\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport { useRef } from \"react\";\nimport Slider from \"react-slick\";\nimport { IoIosArrowDropleft, IoIosArrowDropright } from \"react-icons/io\";\nimport { mq } from \"../../../cssInJs\";\nimport { SiteLink } from \"../../../components\";\n\nconst tiles = [\n {\n id: 1,\n title: \"Caramalised Banana Cake\",\n img: \"/assets/gourmetpro/caramalised_banana_cake.jpg\",\n description: \"\",\n link: \"/recipes/caramelised-banana-cake\",\n },\n {\n id: 2,\n title: \"Sticky Asian Pork Ribs\",\n img: \"/assets/gourmetpro/sticky_asian_pork_ribs.jpg\",\n description: \"\",\n link: \"/recipes/sticky-asian-pork-ribs\",\n },\n {\n id: 3,\n title: \"Sweet Miso Glazed Eggplant Poke Bowl\",\n img: \"/assets/gourmetpro/sweet_miso_glazed_eggplant_poke_bowl.jpg\",\n description: \"\",\n link: \"/recipes/sweet-miso-glazed-eggplant-poke-bowl\",\n },\n {\n id: 4,\n title: \"Strawberry, Rhubarb and Rose Cobbler\",\n img: \"/assets/gourmetpro/strawberry_rhubarb_rose_cobbler.jpg\",\n description: \"\",\n link: \"/recipes/strawberry-rhubarb-and-rose-cobbler\",\n },\n {\n id: 5,\n title: \"Fig-caccia\",\n img: \"/assets/gourmetpro/fig_caccia.jpg\",\n description: \"\",\n link: \"/recipes/fig-caccia\",\n },\n // {\n // id: 6,\n // title: \"Waffles\",\n // img: \"https://cuisinart.com.au/sites/cuisinart/media/banners/adobestock_435799005.jpg\",\n // description: \"\",\n // },\n // {\n // id: 7,\n // title: \"Waffles\",\n // img: \"https://cuisinart.com.au/sites/cuisinart/media/banners/adobestock_435799005.jpg\",\n // description: \"\",\n // },\n // {\n // id: 8,\n // title: \"Waffles\",\n // img: \"https://cuisinart.com.au/sites/cuisinart/media/banners/adobestock_435799005.jpg\",\n // description: \"\",\n // },\n // {\n // id: 9,\n // title: \"Waffles\",\n // img: \"https://cuisinart.com.au/sites/cuisinart/media/banners/adobestock_435799005.jpg\",\n // description: \"\",\n // },\n // {\n // id: 10,\n // title: \"Waffles\",\n // img: \"https://cuisinart.com.au/sites/cuisinart/media/banners/adobestock_435799005.jpg\",\n // description: \"\",\n // },\n];\n\nexport function SlidingRecipeTiles() {\n const s = getStyle();\n const sliderRef = useRef(null);\n\n const settings = {\n //dots: true,\n speed: 1000,\n infinite: true,\n //autoplaySpeed: 3000,\n //fade: true,\n //autoplay: true,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n ],\n };\n\n function prev() {\n sliderRef.current.slickPrev();\n }\n\n function next() {\n sliderRef.current.slickNext();\n }\n\n return (\n \n \n \n\n
\n Be inspired to
\n elevate your cooking to
\n new heights with these
\n tasty new recipes\n
\n\n
\n Be inspired to elevate your
\n cooking to new heights with these
\n tasty new recipes\n
\n\n
\n \n \n
\n\n \n \n \n {tiles.map((tile, index) => {\n return (\n
\n \n \n \n {/* */}\n
\n {tile.title}\n
\n
\n \n \n \n );\n })}\n
\n \n \n \n );\n}\n\nfunction getStyle() {\n const style = {\n gourmet__pro__sliding__recipe: {\n paddingTop: \"3rem\",\n paddingBottom: \"3rem\",\n backgroundColor: \"white\",\n \".slick-slide > div\": { lineHeight: 0 },\n \".slick-prev, .slick-next\": {\n visibility: \"hidden\",\n },\n },\n gourmet__pro__sliding__recipe__c: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n gourmet__pro__sliding__recipe__title: mq({\n flex: [\"1 0 100%\", null, \"1 0 20%\"],\n maxWidth: [\"100%\", null, \"250px\"],\n padding: \"1rem\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \".gourmet__pro__sliding__recipe__title__text\": {\n textAlign: \"center\",\n color: \"#706F6F\",\n fontWeight: 600,\n \n // \".gourmet__pro__sliding__recipe__title__br\": mq({\n // display: [\"none\", null, \"inline\"],\n // }),\n // \".gourmet__pro__sliding__recipe__title__br__m\": mq({\n // display: [\"inline,\", null, \"none\"],\n // }),\n\n '&.desktop' : mq({\n display: [\"none\", null, \"block\"]\n }),\n '&.mobile' : mq({\n display: [\"block\", null, \"none\"]\n })\n\n },\n \".gourmet__pro__sliding__recipe__title__arrow\": {\n textAlign: \"center\",\n marginTop: \"1rem\",\n svg: {\n width: \"40px\",\n height: \"40px\",\n marginLeft: \"1rem\",\n marginRight: \"1rem\",\n cursor: \"pointer\",\n },\n },\n }),\n gourmet__pro__sliding__recipe__tiles: mq({\n flex: [\"1 0 100%\", null, '\"1 0 80%\"'],\n maxWidth: [\"100%\", null, \"calc(100% - 250px)\"],\n //paddingRight: \"1rem\",\n //paddingLeft: \"1rem\",\n //display: 'inline-block'\n }),\n\n gourmet__pro__sliding__recipe__tile__c: {\n margin: \"0.5rem\",\n overflow: \"hidden\",\n cursor: \"pointer\",\n \"&:hover\": {\n \".gourmet__pro__sliding__recipe__tile\": {\n transform: \"scale(1.02)\",\n },\n },\n },\n\n gourmet__pro__sliding__recipe__tile: mq({\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n paddingTop: [\"100%\", null, \"56.25%\"],\n //margin: \"0.5rem 0.5rem\",\n position: \"relative\",\n transition: \"all 0.3s ease-in-out\",\n \"&:after\": {\n content: \"''\",\n position: \"absolute\",\n top: \"0\",\n width: \"100%\",\n height: \"100%\",\n backgroundImage:\n \"linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.0), rgba(0,0,0,1))\",\n },\n \".gourmet__pro__sliding__recipe__tile__t\": {\n position: \"absolute\",\n bottom: \"5px\",\n padding: \"1rem\",\n color: \"white\",\n fontWeight: 600,\n zIndex: 2,\n lineHeight: \"1.1\",\n },\n }),\n };\n return style;\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport { useState, useEffect, Fragment } from \"react\";\nimport { MdClose } from \"react-icons/md\";\nimport { createPortal } from \"react-dom\";\nimport { mq } from '../../../cssInJs';\n//import '../scss/index.scss';\n\nfunction Portal({ children }) {\n const [el] = useState(document.createElement(\"div\"));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\nconst differences = [\n {\n id: 1,\n title: \"A Roast You Can Boast\",\n img: \"/assets/gourmetpro/a_roast_you_can_boast_round.png\",\n img2: \"/assets/gourmetpro/a_roast_you_can_boast.jpg\",\n description: \"Introducing Turbo Roast, the game changer that delivers a succulent roast in just 40 minutes. Harnessing the extraordinary speed of highspeed convection, steam and air fry, your dinner will be ready in just a fraction of the time. Prepare to impress and savour every tender bite.\"\n },\n {\n id: 2,\n title: \"Rise to Every Challenge\",\n img: \"/assets/gourmetpro/rise_to_every_challenge_round.png\",\n img2: \"/assets/gourmetpro/rise_to_every_challenge.jpg\",\n description: \"Become the master baker you've always aspired to be with our Steam Assist feature. Watch your creations rise to perfection with a burst of steam, resulting in bakery-quality results. Indulge in flawlessly fluffy cakes, bread, and pastries that will leave your taste buds begging for more.\"\n },\n {\n id: 3,\n title: \"The Steam Dream\",\n img: \"/assets/gourmetpro/the_steam_dream_round.png\",\n img2: \"/assets/gourmetpro/the_steam_dream.jpg\",\n description: \"Discover the effortless path to healthy cooking with Super Steam. Experience the fast and even distribution of steam, preserving vital nutrients and enhancing the flavour of your dishes. From vibrant vegetables to delectable seafood, every bite will be a celebration of freshness and wellness.\"\n },\n {\n id: 4,\n title: \"Enjoy Guilt Free Crisp\",\n img: \"/assets/gourmetpro/enjoy_guilt_free_grisp_round.png\",\n img2: \"/assets/gourmetpro/enjoy_guilt_free_crisp.jpg\",\n description: \"Experience guilt-free indulgence with Gourmet Pro, harnessing the power of hot air to create the perfect crunch in every bite. Say goodbye to traditional frying methods with an air fry function that uses top-down convection to evenly distribute hot air ensuring your food achieves that coveted crispy texture on the outside, while remaining tender and juicy on the inside.\"\n },\n {\n id: 5,\n title: \"Save Time & Money\",\n img: \"/assets/gourmetpro/save_time_money_round.png\",\n img2: \"/assets/gourmetpro/save_time_money.jpg\",\n description: \"Enjoy reduced cooking times by an incredible 40%, allowing you to prepare meals faster without compromising quality. The minimal pre-heating requirement of the 20L oven cavity ensures efficient energy usage, helping you cut down on running costs compared to a conventional oven.\"\n }\n];\n\nexport function DifferenceInfoPanel() {\n\n const s = getStyle();\n const [openPopup, setOpenPopup] = useState(false);\n const [differenceItem, setDifferenceItem] = useState();\n\n\n function closeCookingCompanions() {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }\n\n function open(difference) {\n setOpenPopup(true);\n setDifferenceItem(difference);\n document.body.style.overflow = \"hidden\";\n }\n\n return (\n \n\n {\n openPopup &&\n \n
\n \n \n
\n \n
\n
\n
\n
\n\n
\n
\n {differenceItem.title}\n
\n
\n {differenceItem.description}\n
\n
\n\n
\n
\n
\n
\n }\n\n
\n
\n {\n differences.map((difference, index) => {\n return (\n
\n
{\n open(difference);\n }}>\n {difference.title}\n
\n
\n {difference.title}\n
\n
\n )\n })\n }\n
\n
\n
\n\n\n )\n}\n\nfunction getStyle() {\n const style = {\n\n portal__background: {\n backgroundColor: \"rgba(0,0,0,0.8)\",\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: \"9998\",\n },\n\n portal__close__btn: {\n position: \"fixed\",\n zIndex: \"9999\",\n right: 0,\n top: 0,\n margin: \"1rem\",\n cursor: \"pointer\",\n svg: {\n width: \"30px\",\n height: \"30px\",\n color: \"white\",\n },\n },\n\n gourmet__pro__difference: {\n paddingTop: '3rem',\n paddingBottom: '3rem',\n backgroundColor: '#f1eee9'\n },\n gourmet__pro__difference__items: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n maxWidth : '1180px',\n margin : 'auto'\n },\n gourmet__pro__difference__item: mq({\n flex: ['1 0 100%', null, '1 0 33.3%'],\n maxWidth: ['100%', null, '33.3%'],\n padding: '1rem',\n '&:hover': {\n 'img': {\n transform: 'scale(1.02)',\n },\n '.gourmet__pro__difference__title': {\n color: '#97c424'\n }\n }\n }),\n gourmet__pro__difference__icon: mq({\n maxWidth: ['220px', null, \"300px\"],\n maxHeight: ['220px', null, \"300px\"],\n margin: \"auto\",\n cursor: 'pointer',\n //overflow : 'hidden',\n // '&:hover' : {\n // 'img' : {\n // transform: 'scale(1.02)',\n // }\n // },\n 'img': {\n transition: 'all 0.3s ease-in-out'\n }\n }),\n gourmet__pro__difference__title: {\n textAlign: 'center',\n fontWeight: 700,\n marginTop: '1rem'\n },\n\n gourmet__pro__difference__contetns: {\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: 'translate(-50%, -50%)',\n zIndex: 9999,\n width: '100%',\n padding: '1rem'\n },\n\n gourmet__pro__difference__contetns__item: {\n display: 'flex',\n maxWidth: '1152px',\n margin: 'auto',\n animation: 'fadeIn 1s',\n flexWrap: 'wrap'\n },\n\n gourmet__pro__difference__contetns__bg: mq({\n flex: ['1 0 100%', null, '1 0 50%'],\n maxWidth: ['100%', null, '50%'],\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n paddingTop: ['56.25%', null, '30%']\n }),\n\n gourmet__pro__difference__contetns__des: mq({\n flex: ['1 0 100%', null, '1 0 50%'],\n maxWidth: ['100%', null, '50%'],\n backgroundColor: 'white',\n position: 'relative'\n //padding : '1rem'\n }),\n\n gourmet__pro__difference__contetns__des__c: mq({\n position: ['static', null, 'absolute'],\n top: '50%',\n left: '50%',\n transform: ['none', null, 'translate(-50%, -50%)'],\n width: ['auto', null, '85%'],\n padding: '1rem'\n }),\n\n gourmet__pro__difference__contetns__title: {\n fontSize: '1.2rem',\n color: 'black',\n fontWeight: 700\n },\n\n gourmet__pro__difference__contetns__des__des: {\n marginTop: '1rem'\n }\n }\n return style;\n}","import utils from '../../utils';\r\nimport React from 'react';\r\nimport { hasRequiredValidator } from './validatorHelper';\r\n\r\nexport function getLabel(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n return <>\r\n \r\n {requiredMark && {requiredMark}}\r\n ;\r\n}\r\n\r\nexport function getLabelAsString(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n \r\n return (label || utils.text.toFieldName(name)) + (requiredMark ? requiredMark : '');\r\n}","export function isExternalLink(link){\r\n return link && (link.indexOf('https://') === 0 || link.indexOf('http://') === 0 || link.indexOf('://') === 0);\r\n}\r\n\r\nexport function getLinkFromElement(el){\r\n if (!el) return null;\r\n const linkEl = el.closest('a');\r\n //console.log(el, linkEl);\r\n if (linkEl){\r\n return linkEl.getAttribute('href');\r\n }\r\n return null;\r\n}\r\n\r\n\r\n// router utils\r\nexport function getLinkInfo(link) {\r\n if (!link) return null;\r\n\r\n const origin = typeof window !== `undefined` && window.location && window.location.origin;\r\n const currentPath = typeof window !== `undefined` && window.location && window.location.pathname;\r\n let linkFiltered = link.replace(origin, '').replace(currentPath + '#', '#');\r\n let linkLower = link.toLowerCase();\r\n\r\n //if (isStaticFile(linkLower)) return null;\r\n const isExternal = isExternalLink(linkFiltered);\r\n const isHash = linkFiltered.indexOf('#') === 0;\r\n const isTel = linkFiltered.indexOf('tel:') === 0;\r\n const isMailTo = linkFiltered.indexOf('mailto:') === 0;\r\n const type = (isHash && 'hash') || (isTel && 'tel') || (isMailTo && 'mailto') || \r\n (isStaticFile(linkLower) && 'static') || (isExternal && 'external') || 'internal';\r\n\r\n return { url: linkFiltered, type: type, ext: getExtension(link) };\r\n}\r\n\r\nvar exts = ['.pdf', '.jpg', '.png', '.gif', '.docx', '.doc']\r\nfunction isStaticFile(path) {\r\n for(let i = 0; i < exts.length; i++) {\r\n if (path.indexOf(exts[i]) >= 0) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function getExtension(filename) {\r\n if (!filename || filename.indexOf('.') < 0) return null;\r\n return filename.split('.').pop().toLowerCase();\r\n}\r\n\r\nexport function getFilename(url) {\r\n return url.split('/').pop().split('?')[0];\r\n}\r\n\r\nexport function getFolderPath(url, parentDepth = -1) {\r\n return url.split('/').slice(0, parentDepth).join('/');\r\n}\r\n\r\n//\r\nexport function toQueryString(params) {\r\n var queryString = Object.keys(params).map((key) => {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\r\n }).join('&');\r\n return queryString;\r\n}\r\n\r\nexport function getYoutubeId(url){\r\n url = url.split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\r\n return (url[2] !== undefined) ? url[2].split(/[^0-9a-z_-]/i)[0] : url[0];\r\n}\r\n\r\nexport function getSlug(text){\r\n return text.toLowerCase().replace(/ /g,'-').replace(/[-]+/g, '-').replace(/[^\\w-]+/g,'');\r\n}\r\n\r\nexport function getWebUrl(url, schema = 'https://'){\r\n if (!url) return null;\r\n if (url.indexOf('https:') >= 0 || url.indexOf('http:') >= 0 || url.indexOf(':') >= 0) {\r\n return url;\r\n }\r\n return schema + url;\r\n}","//#region error json parsing\r\nexport const getErrors = (result) => {\r\n let errors = [];\r\n if (result && result.errors && result.errors.length > 0) {\r\n result.errors.forEach(err => {\r\n errors.push(err.errorMessage);\r\n });\r\n }\r\n return errors;\r\n}\r\n\r\nexport const getErrorMessage = (result) => {\r\n let errors = getErrors(result);\r\n return errors.join(\" \");\r\n}\r\n//#endregion","//#region conversion between array and object\r\nexport const convertToObject = (array, key) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item,\r\n };\r\n }, initialValue);\r\n};\r\n\r\nexport const convertToKeyValues = (array, key, value) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item[value],\r\n };\r\n }, initialValue);\r\n};\r\n//#endregion\r\n\r\n//#region array helper functions\r\nexport const moveItem = (list, fromIndex, toIndex) => {\r\n //const list = Array.from(array);\r\n const [removed] = list.splice(fromIndex, 1);\r\n list.splice(toIndex, 0, removed);\r\n\r\n return list;\r\n};\r\n\r\nexport const removeItem = (list, index) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 1);\r\n\r\n return list;\r\n};\r\n\r\nexport const insertItem = (list, index, item) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 0, item);\r\n\r\n return list;\r\n};\r\n\r\n\r\nexport const find = (list, fn) => {\r\n if (!list) return null;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return list[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findIndex = (list, fn) => {\r\n if (!list) return -1;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nexport const contains = (list, fn) => {\r\n return findIndex(list, fn) >= 0;\r\n}\r\n\r\n// utils.array.distinct(images, (x, y) => x.imageUrl === y.imageUrl)\r\nexport const distinct = (list, comparer) => {\r\n const filtered = []\r\n for (let i = 0; i < list.length; i++) {\r\n if (!contains(filtered, (x) => comparer(x, list[i]))) {\r\n filtered.push(list[i])\r\n }\r\n }\r\n return filtered;\r\n}\r\n\r\nexport const sum = (list, fn) => {\r\n if (!list) return 0;\r\n let total = 0;\r\n for (let i = 0; i < list.length; i++) {\r\n total += fn(list[i]) || 0\r\n }\r\n return total\r\n}\r\n\r\nexport const equal = (list1, list2, fn) => {\r\n if (!list1 && !list2) return true;\r\n if (!list1 || !list2) return false;\r\n if (list1.length !== list2.length) return false;\r\n for (let i = 0; i < list1.length; i++) {\r\n let found = false;\r\n for (let j = 0; j < list2.length; j++) {\r\n if(fn(list1[i], list2[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) return false;\r\n }\r\n return true;\r\n}\r\n//#endregion\r\n\r\n//#region sorting helpers\r\nexport const caseInsensitiveCompare = function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n}\r\n\r\n// put the null items at the end.\r\nexport const compareIgnoreEmpty = function (asc) {\r\n return asc ?\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || +(a > b) || -(a < b);\r\n }\r\n :\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || -(a > b) || +(a < b);\r\n }\r\n}\r\n//#endregion","import parse from \"date-fns/parse\";\r\nimport parseISO from \"date-fns/parseISO\";\r\nimport format from \"date-fns/format\";\r\n\r\n//#region manipulation\r\nexport const addDays = (date, days) => {\r\n var result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n};\r\n//#endregion\r\n\r\n//#region format\r\nexport function formatDate(dateObj, formatStr) {\r\n const date = toDate(dateObj);\r\n if (!date) return \"\";\r\n return format(date, formatStr);\r\n}\r\n\r\nexport function formatYYYYMMDDToday() {\r\n const date = new Date();\r\n //console.log(dateObj, date)\r\n if (!date) return '';\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = '0' + dd;\r\n } \r\n if (mm < 10) {\r\n mm = '0' + mm;\r\n } \r\n return (`${yyyy}-${mm}-${dd}`)\r\n}\r\n\r\nexport function formatYYYYMMDD(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${yyyy}-${mm}-${dd}`;\r\n}\r\n\r\nexport function formatDDMMYYYY(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${dd}-${mm}-${yyyy}`;\r\n}\r\n//#endregion\r\n\r\n//#region parse\r\nexport function toDate(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd\") ||\r\n parseDate(dateObj, \"yyyy-M-d\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy\") ||\r\n parseDate(dateObj, \"d/M/yyyy\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function toDateTime(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-MM-dd HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-M-d HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"d/M/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function parseDate(dateStr, format) {\r\n const date = parse(dateStr, format, new Date());\r\n return date && isValidDate(date) ? date : null;\r\n}\r\n\r\nexport function isValidDate(d) {\r\n return d instanceof Date && !isNaN(d);\r\n}\r\n//#endregion\r\n","//#region background images\r\nexport const bgUrl = (imageUrl) => {\r\n return `background-image:url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n\r\nexport const bgUrlStyle = (imageUrl) => {\r\n return `url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n//#endregion\r\n\r\n//#region screen/element size\r\nexport const screenWidth = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerWidth ||\r\n document.documentElement.clientWidth ||\r\n document.body.clientWidth\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const screenHeight = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const outerWidth = el => el.offsetWidth\r\nexport const outerHeight = el => el.offsetHeight\r\n//#endregion\r\n\r\n//#region css class\r\n/**\r\n * Check if element has the css class on it.\r\n */\r\nexport const hasClass = (el, className) => {\r\n if (el.classList) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!el.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`))\r\n}\r\n\r\n/**\r\n * Adds the provided css className to the element.\r\n */\r\nexport const addClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.add(className)\r\n return\r\n }\r\n\r\n if (!hasClass(el, className)) {\r\n el.className += ` ${className}`\r\n }\r\n}\r\n\r\n/**\r\n * Remove the provided css className from the element.\r\n */\r\nexport const removeClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.remove(className)\r\n return\r\n }\r\n\r\n if (hasClass(el, className)) {\r\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`)\r\n el.className = el.className.replace(reg, ' ')\r\n }\r\n}\r\n\r\n/**\r\n * Adds or removes a class name on the input depending on the status flag.\r\n */\r\nexport const toggleClass = (el, className, status) => {\r\n if (!el || !className) return\r\n\r\n if (status) {\r\n return addClass(el, className)\r\n }\r\n\r\n removeClass(el, className)\r\n}\r\n//#endregion","import { gsap } from 'gsap';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\n\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport function scrollTo(selector, duration = 750, delay = 0) {\r\n const el = findElement(selector);\r\n if (el) {\r\n setTimeout(() => {\r\n //console.log(element);\r\n const offset = elementOffset(el);\r\n //console.log(offset)\r\n //window.scrollTo(0, offset.top - 300);\r\n\r\n gsap.to(window, {duration: (duration/1000), scrollTo: offset.top - 100, ease: 'power1'});\r\n\r\n }, delay);\r\n //el.scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' }); }, timeout);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function findElement(selector) {\r\n if (typeof selector !== 'string') return selector;\r\n\r\n let found = querySelectorOrNull(selector)\r\n || querySelectorOrNull('#' + selector)\r\n || querySelectorOrNull('.' + selector)\r\n \r\n return found;\r\n}\r\n\r\nexport function querySelectorOrNull(selector) {\r\n try {\r\n return document.querySelector(selector);\r\n } catch(e){\r\n return null;\r\n };\r\n}\r\n\r\nexport function elementOffset(el) {\r\n var rect = el.getBoundingClientRect(),\r\n scrollLeft = typeof window !== `undefined` ? (window.pageXOffset || document.documentElement.scrollLeft) : 0,\r\n scrollTop = typeof window !== `undefined` ? (window.pageYOffset || document.documentElement.scrollTop) : 0;\r\n\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft, width: el.offsetWidth, height: el.offsetHeight }\r\n}\r\n\r\nexport function isElementInViewport (el) {\r\n if (typeof window !== `undefined`) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\r\n );\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nexport function getCurrentBreakpoint() {\r\n if (typeof window === `undefined`) return null;\r\n \r\n const bpHolder = document.querySelector('.devMediaQueryStatus__current');\r\n if (!bpHolder) return null;\r\n return window.getComputedStyle(bpHolder, ':before').getPropertyValue('content').replace(/[\"']/g, '');\r\n}\r\n\r\n","export function formatMoney(number, fraction = 0) {\r\n var formatter = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n minimumFractionDigits: fraction,\r\n });\r\n\r\n return formatter.format(number);\r\n}\r\n\r\nexport function toMonthlyCost(amount, frequency) {\r\n if (!amount) return 0;\r\n if (frequency === 'Week') {\r\n return amount * 52.1429 / 12.0;\r\n } else if (frequency === 'Fortnight') {\r\n return amount * 52.1429 / 2.0 / 12.0;\r\n } else if (frequency === 'Month') {\r\n return amount;\r\n } else if (frequency === 'Quarter') {\r\n return amount * 4.0 / 12.0;\r\n } else if (frequency === 'Year') {\r\n return amount / 12.0;\r\n } else {\r\n return amount;\r\n }\r\n}\r\n","export function isBlank(str) {\r\n return (!str || /^\\s*$/.test(str))\r\n}\r\n\r\nexport function isEmpty(str) {\r\n return (!str || str.length === 0)\r\n}\r\n\r\nexport function isNumeric(num){\r\n return !isNaN(num)\r\n}\r\n\r\nexport function capitalize(expression) {\r\n return expression.charAt(0).toUpperCase() + expression.slice(1);\r\n}\r\n\r\nexport function toFieldName(str) {\r\n if (!str) return null;\r\n return capitalize((str.replace(/([A-Z]+)/g, ' $1').replace(/([A-Z][a-z])/g, ' $1')).trim());\r\n}\r\n\r\nexport function toHtml(str) {\r\n if (!str) return null;\r\n return str.replace(/[\\n\\r]/g, '
')\r\n}\r\n\r\n// Shorten a string to less than maxLen characters without truncating words.\r\nexport function truncateWords(str, maxLen, separator = ' ', ellipsis = '...') {\r\n if (str.length <= maxLen) return str\r\n var pos = str.lastIndexOf(separator, maxLen)\r\n return str.substr(0, pos) + ellipsis\r\n}\r\n\r\nexport function numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n}\r\n\r\nexport const formatNumber = (value) => {\r\n if (value === 0) return '0';\r\n if (!value) return '';\r\n return Math.round(value * 100) / 100\r\n}\r\n\r\nexport const toTelephoneNumber = (str) => {\r\n return (str || []).replace(/[^+\\d]+/g, \"\");\r\n\r\n}\r\n\r\n// utils.text.like('text here', '%keyword%')\r\nexport const like = (str, search) => {\r\n if (typeof search !== 'string' || str === null) { return false; }\r\n // Remove special chars\r\n search = search.replace(new RegExp(\"([\\\\.\\\\\\\\\\\\+\\\\*\\\\?\\\\[\\\\^\\\\]\\\\$\\\\(\\\\)\\\\{\\\\}\\\\=\\\\!\\\\<\\\\>\\\\|\\\\:\\\\-])\", \"g\"), \"\\\\$1\");\r\n // Replace % and _ with equivalent regex\r\n search = search.replace(/%/g, '.*').replace(/_/g, '.');\r\n // Check matches\r\n return RegExp('^' + search + '$', 'gi').test(str);\r\n\r\n}","import shortid from 'shortid';\r\nimport uuid from 'uuid/v4';\r\n\r\nexport function shortId() {\r\n return shortid();\r\n}\r\n\r\nexport function guid() {\r\n return uuid();\r\n}","export function toCamel(o) {\r\n var newO, origKey, newKey, value\r\n if (o instanceof Array) {\r\n return o.map(function(value) {\r\n if (typeof value === \"object\") {\r\n value = toCamel(value)\r\n }\r\n return value\r\n })\r\n } else {\r\n newO = {}\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()\r\n value = o[origKey]\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = toCamel(value)\r\n }\r\n newO[newKey] = value\r\n }\r\n }\r\n }\r\n return newO\r\n}","import { getFilename } from './url';\r\nimport { contains } from './array';\r\nexport function getImageSetPath(url, setId) {\r\n const info = getPathDetails(url)\r\n if (!info) return url;\r\n //console.log(url, info);\r\n return info.baseFolder + \"/@\" + setId + '/' + info.filename\r\n}\r\n\r\nexport function getPathDetails(url, setIds) {\r\n if (!url) return null;\r\n const parts = url.split('/').slice(0, -1);\r\n if (parts.length <= 1) return { baseFolder: '/', setId: null, filename: getFilename(url) };\r\n\r\n const lastFolder = parts[parts.length - 1];\r\n const hasSet = setIds && setIds.length > 0 ? contains(setIds, x => x === lastFolder) : lastFolder.indexOf('@') === 0;\r\n\r\n return hasSet ?\r\n { baseFolder: parts.slice(0, -1).join('/'), setId: lastFolder, filename: getFilename(url) } :\r\n { baseFolder: parts.join('/'), setId: null, filename: getFilename(url) }\r\n}","import classNames from 'classnames';\r\nimport * as url from './url';\r\nimport * as form from './form';\r\nimport * as array from './array';\r\nimport * as date from './date';\r\nimport * as css from './css';\r\nimport * as ui from './ui';\r\nimport * as money from './money';\r\nimport * as text from './text';\r\nimport * as random from './random';\r\nimport * as object from './object';\r\nimport * as media from './media';\r\n\r\nexport default { classNames, url, form, array, date, css, ui, money, text, random, object, media};","import utils from \"../utils\";\nimport env from '../env';\n\nexport const isMobile = () => {\n var width = utils.css.screenWidth()\n return width < 768\n}\n\nexport function resourcePath(url){\n return utils.url.isExternalLink(url)? url : env.resourceBase + url;\n}\n\nexport function fullUrl(url){\n return utils.url.isExternalLink(url)? url : env.baseOrigin + url;\n}\n\nexport function getAlternates(path){\n const alternates = [];\n\n alternates.push({hreflang: \"en-au\", href: \"https://cuisinart.com.au\" + path})\n alternates.push({hreflang: \"en-nz\", href: \"https://cuisinart.co.nz\" + path})\n alternates.push({hreflang: \"x-default\", href: \"https://cuisinart.com.au\" + path})\n\n return alternates;\n}\n\nexport const isNZ = env.locale === 'nz'\n\n","import coreUtils from '../lib/utils-core';\nimport * as site from '../site/siteUtils';\n\nexport default { ...coreUtils, site };","import utils from '../../utils';\r\n\r\nexport function hasRequiredValidator(control) {\r\n if (!control) return false;\r\n return !!control.findValidator('required')\r\n}\r\n\r\nexport function getNameForValidator(label, name) {\r\n return utils.text.toFieldName(label || name);\r\n}\r\n\r\nexport function getValidatorOptions(params) {\r\n const defaultOpt = { continueToValidate: false }\r\n return params ? { ...defaultOpt, ...params } : defaultOpt;\r\n}\r\n\r\nexport function createValidator(type, message, opt, validate) {\r\n const validator =\r\n {\r\n type: type,\r\n disabled: false,\r\n ...getValidatorOptions(opt),\r\n message: message,\r\n validate: validate\r\n }\r\n return validator;\r\n}","import React from 'react';\r\n\r\nconst ValidationAlert = ({ errors }) => {\r\n if (!errors || errors.length === 0) return null;\r\n return
') }}>
\r\n}\r\n\r\nexport default ValidationAlert;","const initialState = {\r\n page: null,\r\n menu: null,\r\n popup: null,\r\n history: null\r\n};\r\n\r\nconst reducer = (state = initialState, action) => {\r\n //console.log('reducer', action)\r\n switch (action.type) {\r\n case 'SET_PAGE':\r\n return {\r\n ...state,\r\n page: action.payload\r\n };\r\n case 'SET_MENU':\r\n return {\r\n ...state,\r\n menu: action.payload\r\n };\r\n case 'SET_POPUP':\r\n return {\r\n ...state,\r\n popup: action.payload\r\n };\r\n case 'SET_HISTORY':\r\n return {\r\n ...state,\r\n history: action.payload\r\n };\r\n case 'SET_STATE':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n throw new Error(\"Unexpected action\");\r\n }\r\n};\r\n\r\nexport { initialState, reducer };","import React, { createContext, useReducer, useContext, useEffect } from 'react';\r\nimport { initialState, reducer } from '../../store';\r\n\r\nconst StoreContext = createContext(initialState);\r\n\r\nconst StoreProvider = ({ children }) => {\r\n // Get state and dispatch from Reacts new API useReducer. \r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n //console.log('StoreProvider')\r\n // Log new state\r\n useEffect(() => {\r\n //console.log('-- new state', state);\r\n //console.trace();\r\n }, [state]);\r\n // Render state, dispatch and special case actions\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport { StoreContext, StoreProvider };\r\n\r\nexport const useStore = () => useContext(StoreContext);","export { initialState, reducer } from '../lib/store/reducers';\nexport { StoreContext, StoreProvider, useStore } from '../lib/store';","export function findControl(controlNameOrIndex, root) {\r\n if (typeof controlNameOrIndex === 'number' && root && root.controls.length > controlNameOrIndex) return root.controls[controlNameOrIndex];\r\n return findControlTraverse(controlNameOrIndex, root);\r\n}\r\n\r\nfunction findControlTraverse(controlName, control) {\r\n if (!control) return null;\r\n if (control.name === controlName) return control;\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const found = findControlTraverse(controlName, control.controls[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function findControlById(id, root) {\r\n return findControlByIdTraverse(id, root);\r\n}\r\n\r\nfunction findControlByIdTraverse(id, control) {\r\n if (!control) return null;\r\n if (control.id === id) return control;\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const found = findControlByIdTraverse(id, control.controls[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function getValue(root) {\r\n //console.log(root)\r\n return getValueTraverse(root);\r\n}\r\n\r\nconst helperFns = {\r\n getValueTraverse: getValueTraverse,\r\n getFilesTraverse: getFilesTraverse\r\n}\r\n\r\nfunction getKeyValueTraverse(control) {\r\n let keyValue = {};\r\n keyValue[control.name] = getValueTraverse(control);\r\n return keyValue\r\n}\r\n\r\nfunction getValueTraverse(control) {\r\n //console.log(control);\r\n if (control.controlType === 'control') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n return control.value;\r\n } else if (control.controlType === 'group') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n let value = {};\r\n for (let i = 0; i < control.controls.length; i++) {\r\n value = { ...value, ...getKeyValueTraverse(control.controls[i]) };\r\n }\r\n return value;\r\n } else if (control.controlType === 'array') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n const array = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n array.push(getValueTraverse(control.controls[i]))\r\n }\r\n return array;\r\n }\r\n return null;\r\n}\r\n\r\nexport function getFiles(root) {\r\n //console.log(root)\r\n return getFilesTraverse(root);\r\n}\r\n\r\nfunction getFilesTraverse(control) {\r\n if (control.controlType === 'control') {\r\n return control.files ? [{ name: control.name, files: control.files }] : [];\r\n } else if (control.controlType === 'group') {\r\n let files = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n files.push(...getFilesTraverse(control.controls[i]));\r\n }\r\n return files;\r\n } else if (control.controlType === 'array') {\r\n let files = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n files.push(...getFilesTraverse(control.controls[i]));\r\n }\r\n return files;\r\n }\r\n return [];\r\n}","//import uuid from 'uuid/v4';\r\nimport shortid from 'shortid';\r\nimport * as formModelHelper from './formModelHelper';\r\n\r\n//#region helpers\r\nfunction findIndexById(id) {\r\n for (let i = 0; i < this.controls.length; i++) {\r\n if (this.controls[i].id === id) return i;\r\n }\r\n return -1;\r\n}\r\n//#endregion\r\n\r\nconst group = (controls) => {\r\n const controlArray = [];\r\n //console.log('group', controls, typeof controls);\r\n if (controls && typeof controls === 'object') {\r\n Object.keys(controls).forEach((key) => {\r\n controlArray.push(abstractControl(key, controls[key]));\r\n });\r\n }\r\n\r\n const ctrl = {\r\n controlType: 'group',\r\n id: shortid(),\r\n controls: controlArray,\r\n find: (name) => controlArray.find((x) => x.name === name),\r\n customValueFn: null, // function\r\n disableValidators: false,\r\n };\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl);\r\n ctrl.controls.forEach((x) => (x.parent = ctrl));\r\n\r\n return ctrl;\r\n};\r\n\r\nconst array = (controls) => {\r\n //console.log('array', controls);\r\n const ctrl = {\r\n controlType: 'array',\r\n id: shortid(),\r\n controls: controls,\r\n findIndexById: findIndexById,\r\n };\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl);\r\n ctrl.controls.forEach((x) => (x.parent = ctrl));\r\n\r\n return ctrl;\r\n};\r\n\r\nconst abstractControl = (name, controlObject) => {\r\n //console.log('abstractControl', name, controlObject);\r\n if (!controlObject) return null;\r\n // array or group\r\n if (controlObject.controlType) {\r\n controlObject.name = name;\r\n return controlObject;\r\n } else {\r\n return control(name, controlObject);\r\n }\r\n};\r\n\r\nconst control = (name, [value, validators, controlOptions]) => {\r\n //const { label, type, options, style } = controlOptions || {};\r\n //console.log(value, validators, label, type, options)\r\n return {\r\n ...{\r\n controlType: 'control',\r\n id: shortid(),\r\n name: name,\r\n value: value,\r\n validators: validators || [],\r\n touched: false,\r\n incomplete: false,\r\n findValidator: (type) => (validators || []).find((x) => x.type === type),\r\n // label: label,\r\n // type: type,\r\n // options: options,\r\n // style: style\r\n },\r\n ...controlOptions,\r\n };\r\n};\r\n\r\nexport default { group, array };\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Email(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n // only validate for blur keydown tab\r\n if (e && e.type === 'change') return null;\r\n return !isEmpty(control.value) && !isValidEmail(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid email.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidEmail = mail => {\r\n const regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(mail);\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\nimport utils from '../../../utils';\r\n\r\nexport function ValidateDate(message = null, opt = null) {\r\n return createValidator('date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isDate(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDate(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDateNullAllowed(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return control.value && !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nfunction isDate(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n return !!date;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isPast(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n //console.log(date, typeof date)\r\n if (date) {\r\n const now = new Date();\r\n return date.getTime() < now.getTime();\r\n }\r\n }\r\n return false;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Length(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt, validator) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isValidLength(control.value, validator) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid length.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidLength = (text, validator) => {\r\n const length = (text || '').length;\r\n if (validator.min && length < validator.min) return false;\r\n if (validator.max && length > validator.max) return false;\r\n return true;\r\n}\r\n","import { Required } from './validators/required';\r\nimport { Email } from './validators/email';\r\nimport { ValidateDate, PastDate, PastDateNullAllowed } from './validators/date';\r\nimport { Length } from './validators/length';\r\n\r\nconst validateControl = (control, e, validateOpt) => {\r\n const errors = [];\r\n const validators = control.validators || [];\r\n for (let i = 0; i < validators.length; i++) {\r\n const validator = validators[i];\r\n if (!validator.disabled) {\r\n const error = validator.validate && validator.validate(control, e, validateOpt, validator);\r\n if (error) {\r\n errors.push(error);\r\n //console.log(error, control, validator, e)\r\n\r\n if (!validator.continueToValidate) break;\r\n }\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n};\r\n\r\nexport default {\r\n Required,\r\n Email,\r\n Date: ValidateDate,\r\n PastDate,\r\n PastDateNullAllowed,\r\n Length,\r\n validateControl,\r\n};\r\n","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs, forceUsePlaceholder } = control;\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(control, formOption)\r\n const placeHolder = usePlaceholder ? getLabelAsString(control, formOption) : null;\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n if (type === 'date' && value) {\r\n valueStr = utils.date.formatYYYYMMDD(value);\r\n }\r\n\r\n let prependText = null;\r\n if (style && style.prependText) {\r\n prependText = style.prependText\r\n }\r\n //console.log(name, !!(style && style.autoFocus))\r\n //const autoFocus = !!(style && style.autoFocus)\r\n\r\n function keyDown(e) {\r\n //console.log(e.key)\r\n if (e.key === \"Enter\" || e.key === 'Tab') {\r\n handleChange(e, control)\r\n }\r\n }\r\n function changed(e) {\r\n //console.log('changed', name, e.target.value)\r\n handleChange(e, control)\r\n }\r\n function blur(e) {\r\n //console.log('blur', name, e.target.value)\r\n handleChange(e, control)\r\n }\r\n\r\n // function focus(e) {\r\n // console.log('focus', name, e.target.value)\r\n // }\r\n\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n {prependText &&
\r\n
{prependText}
\r\n
\r\n }\r\n\r\n handleChange(e, control)} \r\n // onBlur={(e) => handleChange(e, control, true)}\r\n onChange={changed}\r\n onKeyDown={keyDown}\r\n onBlur={blur}\r\n autoComplete=\"new-password\"\r\n //onFocus={focus}\r\n //autoFocus={autoFocus}\r\n placeholder={(forceUsePlaceholder && forceUsePlaceholder !== '') ? forceUsePlaceholder : placeHolder}\r\n className={\"form-control\" + (errors && errors.length > 0 ? ' is-invalid' : '')} {...attrs} />\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default TextInput;","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction RadioListInput({ control, handleChange, formOption }) {\r\n const { name, label, value, errors, style, options, helpText, helpLabelText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs} />\r\n \r\n {\r\n (option.helpText && option.helpText !== '') &&\r\n \r\n }\r\n
)}\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(value, optionValue) {\r\n if (optionValue === null || typeof optionValue === 'undefined') return false;\r\n return value === optionValue;\r\n}\r\n\r\nexport default RadioListInput;","import React from \"react\";\r\nimport ValidationAlert from \"../components/ValidationAlert\";\r\nimport utils from \"../../../utils\";\r\nimport { getLabel, getLabelAsString } from \"../formRenderHelper\";\r\n\r\nfunction TextareaInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const { usePlaceholder = false } = formOption;\r\n const placeHolder = usePlaceholder\r\n ? getLabelAsString(control, formOption)\r\n : null;\r\n const valueStr = value === 0 ? 0 : value || \"\";\r\n\r\n const textAreaRef = React.useRef(null);\r\n const [textAreaHeight, setTextAreaHeight] = React.useState(\"auto\");\r\n const [parentHeight, setParentHeight] = React.useState(\"auto\");\r\n\r\n React.useEffect(() => {\r\n const disableAutoHeight = (style && style.disableAutoHeight) || false;\r\n if (!disableAutoHeight) {\r\n if (textAreaRef.current) {\r\n const h =\r\n textAreaRef.current.scrollHeight > 60\r\n ? textAreaRef.current.scrollHeight\r\n : 60;\r\n setParentHeight(`${h}px`);\r\n setTextAreaHeight(`${h}px`);\r\n }\r\n }\r\n }, [valueStr, style]);\r\n\r\n function onChangeInternal(e) {\r\n const disableAutoHeight = (style && style.disableAutoHeight) || false;\r\n if (!disableAutoHeight) {\r\n setTextAreaHeight(\"auto\");\r\n if (textAreaRef.current) {\r\n const h =\r\n textAreaRef.current.scrollHeight > 60\r\n ? textAreaRef.current.scrollHeight\r\n : 60;\r\n setParentHeight(`${h}px`);\r\n }\r\n }\r\n handleChange(e, control);\r\n }\r\n\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && (\r\n \r\n )}\r\n
\r\n 0 ? \" is-invalid\" : \"\")\r\n }\r\n {...attrs}\r\n >\r\n
\r\n {helpText && (\r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default TextareaInput;\r\n","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nconst CheckboxListInput = ({ control, handleChange, formOption }) => {\r\n const { name, label, value, errors, style, options, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n const values = value ? [...value] : [];\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs}/>\r\n \r\n
)}\r\n\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(values, value) {\r\n if (value === null || typeof value === 'undefined') return false;\r\n return values.includes(value);\r\n}\r\n\r\nexport default CheckboxListInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction DateSeparateInput({ control, handleChange, formOption }) {\r\n //const { name, label, value, errors, style } = control;\r\n const { name, label, errors, style, helpText, attrs } = control;\r\n const thisYear = (new Date()).getFullYear();\r\n //console.log(name, value)\r\n const [year, setYear] = React.useState('')\r\n const [month, setMonth] = React.useState('')\r\n const [day, setDay] = React.useState('')\r\n\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, name + '|'+ fieldLabel)\r\n //const placeHolder = usePlaceholder ? fieldLabel : null;\r\n // let valueStr = value === 0 ? 0 : (value || \"\");\r\n // if (type === 'date' && value) {\r\n // valueStr = utils.date.formatYYYYMMDD(value);\r\n // }\r\n\r\n function handleChangeDay(e) {\r\n setDay(e.target.value)\r\n handleChangeInner(year, month, e.target.value)\r\n }\r\n\r\n function handleChangeMonth(e) {\r\n setMonth(e.target.value)\r\n handleChangeInner(year, e.target.value, day)\r\n }\r\n\r\n function handleChangeYear(e) {\r\n setYear(e.target.value)\r\n handleChangeInner(e.target.value, month, day)\r\n }\r\n\r\n function handleChangeInner(yyyy, mm, dd) {\r\n control.incomplete = !(yyyy !== '' && mm !== '' && dd !== '')\r\n const newVal = yyyy + '-' + mm + '-' + dd;\r\n //console.log(newVal)\r\n //mimic event\r\n handleChange({\r\n persist: () => { },\r\n target: { name: name, value: newVal, checked: false }\r\n }, control)\r\n }\r\n\r\n //const monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\r\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n const selectStyle = { width: 'auto', display: 'inline-block', marginRight: '0.5em' };\r\n\r\n const fromYear = style && style.recentYear ? thisYear : thisYear - 10;\r\n const recentYear = style && style.recentYear ? style.recentYear : 100;\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n \r\n \r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DateSeparateInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction FileInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, control)\r\n const placeHolder = usePlaceholder ? fieldLabel : null;\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n if (type === 'date' && value) {\r\n valueStr = utils.date.formatYYYYMMDD(value);\r\n }\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n handleChange(e, control)} onBlur={(e) => handleChange(e, control)}\r\n placeholder={placeHolder}\r\n className={\"form-control-file\" + (errors && errors.length > 0 ? ' is-invalid' : '')} {...attrs}/>\r\n
\r\n \r\n
\r\n { valueStr === '' ? 'No File Chosen' : valueStr.replace(/^.*\\\\/, \"\")}\r\n
\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default FileInput;","import TextInput from './TextInput';\r\nimport RadioListInput from './RadioListInput';\r\nimport TextareaInput from './TextareaInput';\r\nimport CheckboxInput from './CheckboxInput';\r\nimport CheckboxListInput from './CheckboxListInput';\r\nimport SelectInput from './SelectInput';\r\nimport HiddenInput from './HiddenInput';\r\n//import HtmlInput from './HtmlInput';\r\nimport DateSeparateInput from './DateSeparateInput';\r\nimport FileInput from './FileInput';\r\n\r\nconst Components = { TextInput, RadioListInput, TextareaInput, CheckboxInput, CheckboxListInput, SelectInput, HiddenInput, DateSeparateInput, FileInput };\r\n\r\nconst capitalize = expression => expression.charAt(0).toUpperCase() + expression.slice(1);\r\n\r\nexport function getControl(control, formOption) {\r\n let Component = null;\r\n if (control.type === 'number' || control.type === 'email' || control.type === 'date' || control.type === 'password' || control.type === 'tel')\r\n Component = TextInput;\r\n else if (control.type === \"dob\")\r\n Component = DateSeparateInput;\r\n else\r\n Component = Components[capitalize(control.type || '') + 'Input'];\r\n\r\n return Component;\r\n}\r\n\r\n","import React from \"react\";\r\nimport ValidationAlert from \"../components/ValidationAlert\";\r\nimport utils from \"../../../utils\";\r\nimport { getLabel } from \"../formRenderHelper\";\r\nimport { SiteLink } from \"../../../components\";\r\n\r\nconst CheckboxInput = ({ control, handleChange, formOption }) => {\r\n const {\r\n name,\r\n label,\r\n type,\r\n value,\r\n errors,\r\n style,\r\n helpText,\r\n attrs,\r\n link,\r\n linkText,\r\n } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n return (\r\n
\r\n handleChange(e, control)}\r\n className={\"form-check-input\"}\r\n {...attrs}\r\n />\r\n \r\n\r\n {helpText && (\r\n
\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckboxInput;\r\n","import React from 'react'\r\nimport ValidationAlert from '../components/ValidationAlert'\r\nimport utils from '../../../utils'\r\nimport { getLabel } from '../formRenderHelper'\r\n\r\nfunction SelectInput({ control, handleChange, formOption }) {\r\n // eslint-disable-next-line\r\n const { name, label, type, value, errors, style, options, helpText, attrs } =\r\n control\r\n const fieldId = utils.random.shortId()\r\n const fieldLabel = getLabel(control, formOption)\r\n // console.log(value, typeof value);\r\n let mainCategory = ''\r\n if (options.filter((option) => option.selected)) {\r\n if (\r\n options.filter((option) => option.selected).length !== 0 &&\r\n options.filter((option) => option.selected)[0].hasOwnProperty('name')\r\n ) {\r\n mainCategory = options.filter((option) => option.selected)[0].name\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {fieldLabel && (\r\n \r\n )}\r\n
\r\n handleChange(e, control)}\r\n defaultValue={mainCategory === null ? '' : value}\r\n className={\r\n 'form-control' + (errors && errors.length > 0 ? ' is-invalid' : '')\r\n }\r\n {...attrs}\r\n >\r\n \r\n {options &&\r\n options.map((option) =>\r\n option.name !== mainCategory ? (\r\n \r\n {option.name}\r\n \r\n ) : (\r\n ''\r\n )\r\n )}\r\n \r\n
\r\n {helpText && (\r\n
\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectInput\r\n","import * as React from 'react';\r\nimport utils from '../../../utils';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, value } = control;\r\n const fieldId = utils.random.shortId();\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default TextInput;","import React from 'react';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport { getControl } from './controls';\r\nimport { getSiteControl } from '../../form';\r\n\r\nexport function renderControlDirect(control, handleChange, formOption) {\r\n if (control === null) return null;\r\n let Component = getSiteControl(control, formOption) || getControl(control, formOption);\r\n if (!Component) return control.value;\r\n return ;\r\n}\r\n\r\n\r\nexport function renderControl(formRoot, nameOrIndex, handleChange, formOption) {\r\n //console.log(formRoot, name);\r\n const control = formModelHelper.findControl(nameOrIndex, formRoot);\r\n //console.log(control, formRoot, name, handleChange, formOption)\r\n if (control) {\r\n return renderControlDirect(control, handleChange, formOption);\r\n }\r\n}\r\n\r\nexport default { renderControl, renderControlDirect }","import validators from './validators';\r\n\r\nexport function validate(root, validateOpt = {}) {\r\n //console.log({...{ triggeredByChange: false }, ...validateOpt})\r\n //console.log(root, validateOpt)\r\n const errors = validateTraverse(root, {...{ triggeredByChange: false }, ...validateOpt});\r\n return errors;\r\n}\r\n\r\nfunction validateTraverse(control, validateOpt) {\r\n if (!control) return [];\r\n //console.log(!!control.disableValidators, control)\r\n if (!!control.disableValidators) { control.errors =[]; return []; }\r\n const errors = [];\r\n const errorsFromControl = validators.validateControl(control, null, validateOpt);\r\n errors.push(...errorsFromControl);\r\n //console.log(errorsFromControl, errors)\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const errorsFromSub = validateTraverse(control.controls[i], validateOpt);\r\n errors.push(...errorsFromSub);\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n}\r\n\r\n","import { useState } from 'react';\r\nimport controlRenderer from './controlRenderer';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport * as formValidate from './formValidate';\r\nimport validators from './validators';\r\n\r\nconst useForm = (initialFormModel, option) => {\r\n const [formModel, setFormModel] = useState(initialFormModel);\r\n const formOption = {\r\n ...{\r\n template: 'bootstrap',\r\n usePlaceholder: false,\r\n requiredMark: '*',\r\n onControlChanged: null,\r\n },\r\n ...option,\r\n };\r\n\r\n const handleChange = (e, controlFromEvent) => {\r\n e.persist();\r\n const control =\r\n controlFromEvent || formModelHelper.findControl(e.target.name, formModel);\r\n //console.log(control)\r\n // const control = controlId? formModelHelper.findControlById(controlId, formModel)\r\n // : formModelHelper.findControl(e.target.name, formModel);\r\n if (!control) return;\r\n\r\n //console.log(control.value, e.target)\r\n control.touched = true;\r\n control.value = getControlValue(control, e.target);\r\n if (control.type === 'file') {\r\n control.files = e.target.files;\r\n }\r\n\r\n // parseInput(control);\r\n if (control.onBeforeUpdateValue) {\r\n control.onBeforeUpdateValue(control, formModel);\r\n }\r\n\r\n validators.validateControl(control, e, { triggeredByChange: true });\r\n setFormModel({ ...formModel });\r\n\r\n if (formOption.onControlChanged) {\r\n formOption.onControlChanged(e, control);\r\n }\r\n };\r\n\r\n const validateForm = (e, successHandler, errorHandler) => {\r\n validateGroup(formModel, e, successHandler, errorHandler);\r\n };\r\n\r\n const validateGroup = (control, e, successHandler, errorHandler) => {\r\n e && e.preventDefault();\r\n const errors = formValidate.validate(control);\r\n\r\n if (errors.length === 0) successHandler && successHandler();\r\n else {\r\n setFormModel({ ...formModel });\r\n errorHandler && errorHandler(errors);\r\n }\r\n };\r\n\r\n const reset = (model) =>\r\n setFormModel(model ? { ...model } : { ...formModel });\r\n\r\n // const parseInput = input => input.value = input.parseFun ? input.parseFun(input.value) : input.value;\r\n\r\n const renderControl = (name, formRoot) =>\r\n controlRenderer.renderControl(\r\n formRoot || formModel,\r\n name,\r\n handleChange,\r\n formOption\r\n );\r\n const renderControlDirect = (control) =>\r\n controlRenderer.renderControlDirect(control, handleChange, formOption);\r\n\r\n const getValue = (formRoot) =>\r\n formModelHelper.getValue(formRoot || formModel);\r\n\r\n const getFiles = (formRoot) =>\r\n formModelHelper.getFiles(formRoot || formModel);\r\n\r\n const findControl = (name, formRoot) => {\r\n const control = formModelHelper.findControl(name, formRoot || formModel);\r\n return control;\r\n };\r\n //return [controls, handleChange, handleSubmit, getValue]\r\n return {\r\n model: formModel,\r\n errors: formModel.errors,\r\n reset: reset,\r\n renderControl: renderControl,\r\n renderControlDirect: renderControlDirect,\r\n findControl: findControl,\r\n validateForm: validateForm,\r\n validateGroup: validateGroup,\r\n getValue: getValue,\r\n getFiles: getFiles,\r\n };\r\n};\r\n\r\nfunction getControlValue(control, el) {\r\n //console.log(control, el)\r\n if (control.type === 'checkboxList') {\r\n const options = el.closest('.controlOptions');\r\n if (options) {\r\n return [...options.querySelectorAll('input:checked')].map((x) => x.value);\r\n }\r\n return [];\r\n } else if (control.type === 'radioList') {\r\n const options = el.closest('.controlOptions');\r\n if (options) {\r\n const val = [...options.querySelectorAll('input:checked')].map(\r\n (x) => x.value\r\n );\r\n return val && val.length > 0 ? val[0] : null;\r\n }\r\n return null;\r\n }\r\n return control.type === 'checkbox' ? el.checked : el.value;\r\n}\r\n\r\nexport { useForm };\r\n","import fb from './formBuilder';\r\nimport validators from './validators';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport * as formRenderHelper from './formRenderHelper';\r\nimport * as validatorHelper from './validatorHelper';\r\n\r\nexport { useForm } from './useForm';\r\nexport { useStep } from './useStep';\r\nexport { fb, validators, validatorHelper, formModelHelper, formRenderHelper }","import facepaint from 'facepaint'\r\nimport siteConfig from '../../config';\r\n\r\nconst config = siteConfig.cssEmotion\r\nconst breakpointNames = (config && config.breakpointNames) || ['sm', 'md', 'lg', 'xl', 'xxl']\r\nconst breakpoints = (config && config.breakpoints) || [576, 768, 992, 1200, 1600]\r\n\r\nconst mq = facepaint(\r\n breakpoints.map(bp => `@media (min-width: ${bp}px)`)\r\n)\r\n\r\nconst mqMin = {};\r\nbreakpointNames.forEach((bp, index) => mqMin[bp] = `@media (min-width: ${breakpoints[index]}px)`)\r\n\r\nconst mqMax = {};\r\nbreakpointNames.forEach((bp, index) => mqMax[bp] = `@media (max-width: ${breakpoints[index] - 1}px)`)\r\n//console.log(mqMin, mqMax)\r\n\r\nconst matches = (mediaQuery) => !!window.matchMedia(mediaQuery).matches\r\nconst isMin = {};\r\nbreakpointNames.forEach((bp, index) => isMin[bp] = () => matches(`(min-width: ${breakpoints[index]}px)`))\r\n\r\nconst isMax = {};\r\nbreakpointNames.forEach((bp, index) => isMax[bp] = () => matches(`(max-width: ${breakpoints[index] - 1}px)`))\r\n\r\nexport { mq, mqMin, mqMax, isMin, isMax }","export function overlay() {\r\n return {\r\n content: `''`,\r\n position: 'absolute',\r\n top:0,\r\n bottom:0,\r\n left: 0,\r\n right: 0,\r\n transition: 'all 0.5s'\r\n }\r\n}","import variables from './variables'\nimport { mq, mqMin, mqMax, mixin, isMin, isMax } from '../lib/css-emotion'\n\nexport { variables, mixin, mq, mqMin, mqMax, isMin, isMax }","// closest\r\n\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || \r\n Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function(s) {\r\n var el = this;\r\n\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n\r\n\r\n// getBoundingClientRect","import React from 'react';\n\nexport function NotFound(props) {\n const debugInfo = props.debugInfo;\n document.title = 'Not Found';\n function refreshPage(e) {\n e.preventDefault();\n if (typeof window !== `undefined`) {\n window.location.reload();\n }\n }\n\n function goBack(e) {\n e.preventDefault();\n if (typeof window !== `undefined`) {\n window.history.back();\n }\n }\n\n return (\n
\n
\n

404 Error

\n\n

Please refreshPage(e)}>refresh your browser.

\n
\n \n
\n\n {\n debugInfo &&\n
Error message: {debugInfo.pageUrl} - {debugInfo.loadFrom} 
\n }\n\n
\n\n
\n\n )\n}","import React from 'react';\r\nimport env from '../../env';\r\nimport { enableForceUpdate, disableForceUpdate } from '../service-worker/swHelper';\r\n\r\nexport function AppVersion(props) {\r\n\r\n const [checkStatus, setCheckStatus] = React.useState('idle')\r\n //const [secs, setSecs] = React.useState(10)\r\n const ver = env.ver;\r\n const updateDate = env.updateDate;\r\n\r\n React.useEffect(() => {\r\n console.log(checkStatus);\r\n let timer = null;\r\n if (checkStatus === 'checking') {\r\n if (typeof window !== `undefined`) {\r\n enableForceUpdate();\r\n window.updateSW().then(function () {\r\n console.log('sw update called');\r\n setCheckStatus('checked')\r\n\r\n setTimeout(() => {\r\n console.log('timer called');\r\n disableForceUpdate();\r\n window.location.reload()\r\n }, 4000)\r\n })\r\n }\r\n // console.log('timer set');\r\n // let timer = setTimeout(() => {\r\n // console.log('timer called');\r\n // if (typeof window !== `undefined`) {\r\n // window.location.reload()\r\n // }\r\n // }, 5000)\r\n return () => { console.log('timer clear', timer); if (timer) clearTimeout(timer) }\r\n }\r\n }, [checkStatus])\r\n\r\n function checkUpdates(e) {\r\n if (typeof window !== `undefined`) {\r\n if (window.updateSW) {\r\n setCheckStatus('checking')\r\n } else {\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n\r\n function refreshApp(e) {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n let button = null\r\n if (checkStatus === 'checking') {\r\n button = ;\r\n } else if (checkStatus === 'checked') {\r\n button = <>
(If this does't reload automatically, please click the above button)
;\r\n } else {\r\n button = ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Version: {ver} ({updateDate})\r\n
\r\n
\r\n {button}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport function AppVersionPage(props) {\r\n return (\r\n
\r\n \r\n
);\r\n}","import React from 'react';\n\nexport function Button({onClick, status, children, btnStyle='primary', className}) {\n let buttonStyle = 'btn-' + btnStyle;\n return (\n \n );\n}","import React from 'react';\r\n\r\nexport const ErrorMessage = ({ errors, summaryMessage = null }) => {\r\n if (!errors) return null;\r\n if (typeof errors.length !== 'undefined' && errors.length === 0) return null;\r\n\r\n if (summaryMessage)\r\n return (\r\n
\r\n {summaryMessage}\r\n
\r\n );\r\n let message = errors;\r\n if (Array.isArray(errors)) {\r\n if (errors.length === 0) return null;\r\n message = errors.map((error, index) =>
{error}
);\r\n }\r\n\r\n return (\r\n
\r\n {message}\r\n
\r\n );\r\n};\r\n","//import React from 'react';\r\n/** @jsx jsx */\r\nimport { css, jsx } from '@emotion/core'\r\n\r\nexport const ErrorPopup = (props) => {\r\n const title = props.title || 'Errors';\r\n const errors = props.errors;\r\n let messages = [];\r\n if (errors) {\r\n if (Array.isArray(errors)) {\r\n messages = errors;\r\n } else {\r\n messages.push(errors);\r\n }\r\n }\r\n\r\n const style = css({\r\n position: 'fixed',\r\n padding: '3rem',\r\n width: '800px',\r\n maxWidth: '90vw',\r\n maxHeight: '90vw',\r\n background: 'white',\r\n color: 'red',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: '1000'\r\n })\r\n\r\n return
\r\n

{title}

\r\n {props.children}\r\n {messages.map((error, inx) => (\r\n
\r\n ))}\r\n \r\n
\r\n}\r\n","import React from \"react\";\r\n\r\nfunction SvgNarrowRight(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgNarrowRight;\r\n","import * as React from \"react\";\r\nimport siteConfig from '../../../config';\r\n\r\nconst iconColors = (siteConfig && siteConfig.iconColors) || { primary: \"#eee\", secondary: \"#000\" }\r\n\r\nfunction SvgLoading(props) {\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 SvgLoading;","import React from \"react\";\r\nimport { LoadingCircle } from \"../../icons\";\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/core\";\r\n\r\nexport function Loading({ children = undefined }) {\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n const style = {\r\n loading: css({\r\n minHeight: \"300px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n opacity: \"0\",\r\n transition: \"all 1s\",\r\n }),\r\n loaded: css({\r\n opacity: \"1\",\r\n }),\r\n };\r\n\r\n React.useEffect(() => {\r\n let timer = setTimeout(() => setLoaded(true), 500);\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport utils from '../../utils';\r\nimport siteConfig from '../../config';\r\n\r\nexport function useApi(fn) {\r\n //console.log('useApi')\r\n const [response, setResponse] = useState({});\r\n const [errors, setErrors] = useState([]);\r\n const [status, setStatus] = useState('ready');\r\n const [request, setRequest] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!request) return;\r\n\r\n //console.log('fetch now')\r\n setResponse(null);\r\n setErrors([]);\r\n setStatus('ready');\r\n\r\n const fetchData = async () => {\r\n setStatus('pending');\r\n try {\r\n //console.log(request);\r\n const options = request.options || {}\r\n siteConfig.apiNetJwt && await siteConfig.apiNetJwt(options);\r\n\r\n const res = await fetch(request.url, options);\r\n //console.log(res);\r\n\r\n if (!res.ok) {\r\n try {\r\n const json = await res.json();\r\n console.log(json);\r\n\r\n if (json.message) {\r\n setErrors([json.message]);\r\n setStatus('error')\r\n return;\r\n }\r\n } catch (e) { }\r\n\r\n const statusText = res.status === 401 ? 'Permission denied. Please login first.' : res.statusText\r\n setErrors(['Error - [' + res.status + ']' + (statusText && (' - ' + statusText))]);\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n //const json = await res.json();\r\n const text = await res.text();\r\n const json = text && text.length ? JSON.parse(text) : null;\r\n //console.log(json);\r\n\r\n // check if ajax result from c#\r\n if (json && json.errors && json.errors.length > 0) {\r\n setErrors(utils.form.getErrors(json));\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n setResponse(json);\r\n setStatus('done')\r\n } catch (err) {\r\n //console.log(error, error.toString(), typeof error, JSON.stringify(error))\r\n setErrors([err.toString()]);\r\n setStatus('error')\r\n }\r\n };\r\n fetchData();\r\n }, [request]);\r\n\r\n const containsErrorMessage = (msg) => {\r\n const finding = (msg || '').toLowerCase()\r\n return errors.some(x => (x || '').toLowerCase().indexOf(finding) >= 0)\r\n }\r\n\r\n //return [ response, error, status, (...args) => setRequest(fn(...args)) ];\r\n return {\r\n request: request,\r\n response: response,\r\n errors: errors,\r\n status: status,\r\n hasErrors: () => status === 'error',\r\n containsErrorMessage: containsErrorMessage,\r\n addErrors: (errs) => {\r\n setErrors(...errors, ...errs)\r\n setStatus('error')\r\n },\r\n done: () => status === 'done',\r\n send: (...args) => { setStatus('ready'); setRequest(fn(...args)) },\r\n sendRaw: (httpOptionFn, ...args) => { setStatus('ready'); setRequest(httpOptionFn(...args)) },\r\n setResult: (json) => { setResponse(json); setStatus('done') },\r\n reset: () => {\r\n setStatus('ready');\r\n setErrors([]);\r\n }\r\n };\r\n}\r\n\r\nexport function usePost() {\r\n const formDataFn = (url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n body: data // FormData\r\n }\r\n });\r\n const post = useApi((url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data)\r\n }\r\n })\r\n );\r\n return {\r\n ...post,\r\n loading: () => post.status === 'ready' || post.status === 'pending',\r\n sending: () => post.status === 'pending',\r\n sendFormData: (...args) => post.sendRaw(formDataFn, ...args)\r\n }\r\n}\r\n\r\nexport function useGet() {\r\n const get = useApi((url, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'GET'\r\n }\r\n })\r\n );\r\n return {\r\n ...get,\r\n loading: () => get.status === 'ready' || get.status === 'pending'\r\n }\r\n}\r\n\r\n//https://medium.com/@jaryd_34198/seamless-api-requests-with-react-hooks-part-2-3ab42ba6ad5c","import React from 'react';\r\nimport env from '../../env';\r\n\r\nexport function MediaQueryStatus(props) {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet-async';\r\n\r\nexport function MetaTag({ data: seoData }) {\r\n //console.log(seoData)\r\n const data = Object.assign({}, {\r\n title: ''\r\n }, seoData)\r\n\r\n return (<>\r\n \r\n {data.title}\r\n {data.description && }\r\n {data.keywords && }\r\n {data.language && }\r\n {data.country && }\r\n {\r\n (data.faceBookDomainVerifi && data.faceBookDomainVerifi !== '') &&\r\n \r\n }\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n\r\n \r\n\r\n {(data.alternates || []).map((x, index) => )}\r\n\r\n \r\n )\r\n}\r\n\r\n\r\n// function MetaContent({ name, content }) {\r\n// console.log(name, content)\r\n// if (!content) return null;\r\n// return \r\n// }\r\n\r\n","import env from '../../env';\r\n\r\nexport const pageView = (url) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmPageView(url)\r\n if (hasGtag()) gaPageView(url)\r\n if (hasFBPixel()) fbPageView(url)\r\n}\r\n\r\nexport const sendFormEvent = (formName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n const p = Object.assign({ 'gtm.elementId': formName }, params || {})\r\n\r\n if (hasGTM()) gtmSendEvent('form', p)\r\n if (hasGtag()) gaSendEvent('form', p)\r\n if (hasFBPixel()) fbSendEvent('form', p)\r\n}\r\n\r\nexport const sendEvent = (eventName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmSendEvent(eventName, params)\r\n if (hasGtag()) gaSendEvent(eventName, params)\r\n if (hasFBPixel()) fbSendEvent(eventName, params)\r\n}\r\n\r\n//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const gtmPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: {\r\n path: url\r\n }\r\n })\r\n }\r\n}\r\nexport const gtmSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Gtag / GA\r\nexport const hasGtag = () => {\r\n return !!(typeof window !== `undefined` && window.gtag);\r\n}\r\n\r\nexport const gaPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts) {\r\n env.gaAccounts.forEach(id => {\r\n window.gtag('config', id, { 'page_path': url });\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport const gaSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts && env.gaAccounts.length > 0) {\r\n window.gtag('event', eventName, params || {});\r\n }\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Facebook Pixel\r\nexport const hasFBPixel = () => {\r\n return !!(typeof window !== `undefined` && window.fbq);\r\n}\r\n\r\nexport const fbPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', 'PageView');\r\n }\r\n}\r\n\r\nexport const fbSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', eventName, params || {});\r\n }\r\n}\r\n//#endregion\r\n\r\n\r\n\r\n","import utils from '../../utils';\r\n\r\nexport const MAX = 100000;\r\nexport const MIN = -100000;\r\n\r\nexport function getScrollProgress(el) {\r\n if (typeof window !== `undefined`) {\r\n const scroll = window.scrollY || window.pageYOffset\r\n if (!el) {\r\n console.log('not exists', el)\r\n return {\r\n progress: 0,\r\n top: scroll\r\n }\r\n }\r\n const boundsTop = el.getBoundingClientRect().top + scroll\r\n\r\n const viewport = {\r\n top: scroll,\r\n bottom: scroll + window.innerHeight,\r\n height: window.innerHeight\r\n }\r\n\r\n const bounds = {\r\n top: boundsTop,\r\n bottom: boundsTop + el.clientHeight,\r\n height: el.clientHeight\r\n }\r\n\r\n //const scrollTop = window.scrollY || window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n // const status = {\r\n // viewport: viewport,\r\n // bound: bounds,\r\n // inViewport: (bounds.bottom >= viewport.top && bounds.bottom <= viewport.bottom)\r\n // || (bounds.top <= viewport.bottom && bounds.top >= viewport.top)\r\n // }\r\n\r\n //console.log((viewport.bottom - bounds.top) / (bounds.height + viewport.height))\r\n return {\r\n progress: (viewport.bottom - bounds.top) / (bounds.height + viewport.height),\r\n top: (viewport.bottom - bounds.top) / (viewport.height)\r\n }\r\n } else {\r\n return {\r\n progress: 0,\r\n top: 0\r\n }\r\n }\r\n}\r\n\r\n//au.setClass(section, 'animated', pr, [0.3, au.MAX])\r\nexport function setClass(el, className, pr, range)\r\n{\r\n if (pr >= range[0] && pr <= range[1]) {\r\n utils.css.addClass(el, className);\r\n } else {\r\n utils.css.removeClass(el, className);\r\n }\r\n}\r\n\r\nexport function prVal(min, max, pr, range = [0, 1]) {\r\n //console.log(min, max, typeof min, typeof to)\r\n if (pr < range[0]) return min;\r\n if (pr > range[1]) return max;\r\n return min + (max - min) * ((pr - range[0])/(range[1] - range[0]));\r\n}\r\n\r\nexport function transform(el, x, y) {\r\n el.style.transform = 'translate(' + x + ',' + y + ')';\r\n}\r\n\r\nexport function removeTransform(el) {\r\n\r\n}\r\n\r\n// requestAnimationFrame\r\n// const raf =\r\n// (window).requestAnimationFrame ||\r\n// (window).webkitRequestAnimationFrame ||\r\n// (window).mozRequestAnimationFrame ||\r\n// function (callback) {\r\n// (window).setTimeout(callback, 1000 / 60)\r\n// }\r\nexport function getScreenSize() {\r\n const w = utils.css.screenWidth()\r\n const h = utils.css.screenHeight()\r\n return { width: w, height: h };\r\n}\r\n","import React from 'react';\r\nimport { loadJs } from '../../lib/net-loader';\r\n\r\nexport function useInstagram() {\r\n const [embedStatus, setEmbedStatus] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n loadEmbedJs()\r\n })\r\n\r\n function loadEmbedJs() {\r\n if (typeof window !== `undefined`) {\r\n //console.log('instgrm effect', embedStatus, window.instgrm);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n }\r\n else if (!embedStatus && embedStatus !== 'loading') {\r\n setEmbedStatus('loading');\r\n loadJs(\"https://www.instagram.com/embed.js\").then(data => {\r\n //console.log('instgrm loaded', data);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n setEmbedStatus('loaded');\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return { loadEmbedJs: loadEmbedJs }\r\n}","import { useLayoutEffect } from 'react';\r\n//import useWindowScroll from '@react-hook/window-scroll';\r\nimport { au } from '../../components';\r\n\r\n/* background image height =\r\n + cutoff padding = always hidden padding - usually 10 px\r\n + panel height (desired parallax panel height)\r\n + padding height = panel height * padding height ratio\r\n + cutoff padding = always hidden padding - usually 10 px\r\n*/\r\n\r\nconst defaultSettings = {\r\n cutoffPadding: 10,\r\n speed: 15, // 5% of image/100px scroll\r\n //paddingHeightRatio: 0.3\r\n //screenSize\r\n}\r\n\r\nexport const ParallaxData = {\r\n settings: {\r\n screenSize: null\r\n },\r\n panels: [\r\n { selector: '.parallax', imageRatio: 1080 / 1920, panelHeight: 'auto' },\r\n ],\r\n elements: [],\r\n timeoutId: null\r\n}\r\n\r\nexport function useParallax() {\r\n const handleScroll = () => {\r\n //console.log('useParallax - scrolling')\r\n onScroll(ParallaxData);\r\n }\r\n\r\n const reset = () => {\r\n //console.log('useParallax - reset');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n }\r\n\r\n useLayoutEffect(() => {\r\n //console.log('useParallax - effect');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n if (typeof window !== `undefined`) {\r\n window.addEventListener('scroll', handleScroll)\r\n window.addEventListener('resize', reset)\r\n }\r\n return () => {\r\n //console.log('useParallax - removed');\r\n if (typeof window !== `undefined`) {\r\n window.removeEventListener('scroll', handleScroll)\r\n window.removeEventListener('resize', reset)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n return { reset };\r\n};\r\n\r\n// export function useParallax(opt) {\r\n// // const settings = Object.assign({}, defaultSettings, opt);\r\n\r\n// const [resetCounter, setResetCounter] = useState(0);\r\n// const [parallaxData,] = useState(ParallaxData);\r\n\r\n// //const scrollY = useWindowScroll(60 /*fps*/)\r\n// const reset = () => {\r\n// setResetCounter(resetCounter + 1);\r\n// }\r\n\r\n// const handleScroll = () => {\r\n// onScroll(parallaxData);\r\n// }\r\n\r\n// useLayoutEffect(() => {\r\n// console.log('useParallax - effect');\r\n\r\n// setTimeout(() => { init(parallaxData); handleScroll(); }, 300)\r\n\r\n// //const handleScroll = (): void => setThrottledScroll(getScrollY())\r\n// window.addEventListener('scroll', handleScroll)\r\n// window.addEventListener('resize', handleScroll)\r\n// return (): void => {\r\n// window.removeEventListener('scroll', handleScroll)\r\n// window.removeEventListener('resize', handleScroll)\r\n// }\r\n\r\n// // eslint-disable-next-line \r\n// }, [resetCounter]);\r\n// //console.log(scrollY, resetCounter)\r\n\r\n// return { reset };\r\n// };\r\n\r\nexport function init(data) {\r\n //console.log('parallax init');\r\n const screenSize = data.settings.screenSize = au.getScreenSize();\r\n data.settings = Object.assign({}, defaultSettings, data.settings)\r\n let cnt = 0;\r\n data.panels.forEach(panel => {\r\n const elements = document.querySelectorAll(panel.selector) || [];\r\n for (let i = 0; i < elements.length; i++) {\r\n cnt++;\r\n const el = elements[i];\r\n //const el = document.querySelector(panel.selector);\r\n //console.log(panel.selector, el)\r\n //if (!el) { panel.el = null; return; }\r\n const autoPanelHeight = !panel.panelHeight || panel.panelHeight === 'auto';\r\n const panelHeight = autoPanelHeight ? el.offsetHeight : parseFloat(panel.panelHeight);\r\n //console.log(autoPanelHeight, panelHeight)\r\n\r\n const calculated = { shadowHeight: 0, shadowWidth: 0, fromTop: 0, toTop: 0 };\r\n // calculated.shadowHeight = panelHeight * (1 + data.settings.paddingHeightRatio) + 2 * data.settings.cutoffPadding;\r\n // calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n // if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // // magnifying the background image to fix the full width of the browser\r\n // calculated.shadowWidth = data.settings.screenSize.width;\r\n // calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n // }\r\n\r\n const speed = data.settings.speed * (screenSize.width > 1000 ? 1 : 2) \r\n let baseHeight = data.settings.screenSize.width * panel.imageRatio > panelHeight ? data.settings.screenSize.width * panel.imageRatio : panelHeight\r\n baseHeight = baseHeight + (data.settings.screenSize.height + panelHeight) * (speed * 0.01)\r\n calculated.shadowHeight = baseHeight + 2 * data.settings.cutoffPadding;\r\n calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // magnifying the background image to fix the full width of the browser\r\n calculated.shadowWidth = data.settings.screenSize.width;\r\n calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n }\r\n\r\n calculated.fromTop = -data.settings.cutoffPadding;\r\n calculated.toTop = -calculated.shadowHeight + panelHeight + data.settings.cutoffPadding;\r\n\r\n if (!autoPanelHeight)\r\n (el).style.height = panel.panelHeight + 'px';\r\n\r\n (el).style.backgroundSize = calculated.shadowWidth + 'px ' + calculated.shadowHeight + 'px'\r\n\r\n //panel.el = el;\r\n panel.calculated = calculated;\r\n data.elements.push({ el: el, calculated: calculated });\r\n //console.log(panelHeight, baseHeight, calculated)\r\n }\r\n })\r\n\r\n //console.log('parallax init - ' + cnt)\r\n if (cnt === 0) {\r\n if (data.timeoutId) {\r\n try {\r\n if (typeof window !== `undefined`) { \r\n window.clearTimeout(data.timeoutId)\r\n }\r\n } catch(e){}\r\n }\r\n // reschedule\r\n if (typeof window !== `undefined`) { \r\n data.timeoutId = window.setTimeout(() => init(data), 500)\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function onScroll(data) {\r\n //console.log(data);\r\n data.elements.forEach(element => {\r\n if (!element.el) return;\r\n const pr = au.getScrollProgress(element.el).progress;\r\n //console.log(pr);\r\n\r\n const min = element.calculated.fromTop;\r\n const max = element.calculated.toTop;\r\n const top = au.prVal(min, max, pr, [0, 1]);\r\n //console.log(top);\r\n (element.el).style.backgroundPositionY = top + 'px'\r\n })\r\n\r\n}","import { useMemo } from 'react';\r\nimport { useParams, useLocation, useHistory, useRouteMatch, Redirect } from 'react-router-dom';\r\nimport queryString from 'query-string';\r\n\r\nexport function useRouter() {\r\n const params = useParams();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const match = useRouteMatch();\r\n\r\n // Return our custom router object\r\n // Memoize so that a new object is only returned if something changes\r\n return useMemo(() => {\r\n return {\r\n // For convenience add push(), replace(), pathname at top level\r\n navigate: history.push,\r\n push: history.push,\r\n Redirect: Redirect,\r\n replace: history.replace,\r\n pathname: location.pathname,\r\n path: location.pathname + location.hash + location.search,\r\n // Merge params and parsed query string into single \"query\" object\r\n // so that they can be used interchangeably.\r\n // Example: /:topic?sort=popular -> { topic: \"react\", sort: \"popular\" }\r\n query: {\r\n ...queryString.parse(location.search), // Convert string to object\r\n ...params\r\n },\r\n // Include match, location, history objects so we have\r\n // access to extra React Router functionality if needed.\r\n match,\r\n location,\r\n history\r\n };\r\n }, [params, match, location, history]);\r\n}","import { useStore } from '../../store';\r\n\r\n// loc data: {path:'', title:''}\r\nexport function useHistoryStore() {\r\n const { state, dispatch } = useStore();\r\n const history = state.history || [];\r\n\r\n function push(loc) {\r\n const same = history.length > 0 \r\n && (JSON.stringify(history[history.length - 1]) === JSON.stringify(loc))\r\n if (!same) {\r\n // console.log(JSON.stringify(history[history.length - 1]), JSON.stringify(loc))\r\n setHistory([...history, loc]);\r\n }\r\n }\r\n\r\n function setHistory(history){\r\n // console.log('history set', history)\r\n dispatch({ type: 'SET_HISTORY', payload: history })\r\n }\r\n\r\n const last = () => {\r\n // console.log('last history', history)\r\n if (history.length < 2) return null;\r\n return history[history.length - 2].path;\r\n }\r\n\r\n const pop = () => {\r\n if (history.length === 0) return null;\r\n history.pop(); // remove the current first\r\n const item = history.pop();\r\n return item;\r\n }\r\n\r\n return { history, push, pop, last };\r\n};","import utils from '../../utils';\r\n\r\nexport function handleElementLink(el, externalHandler) {\r\n // externalHandler = (url) => {\r\n // if (typeof window !== `undefined`) window.location.href = url;\r\n // }\r\n\r\n const link = utils.url.getLinkFromElement(el);\r\n const linkInfo = utils.url.getLinkInfo(link);\r\n //console.log(link, linkInfo)\r\n if (!linkInfo) return { handled: false, linkInfo: linkInfo };\r\n\r\n if (linkInfo.type === 'hash') {\r\n utils.ui.scrollTo(linkInfo.url);\r\n } else if (linkInfo.type === 'tel' || linkInfo.type === 'mailto') {\r\n\r\n } else if (linkInfo.type === 'external' && externalHandler) {\r\n // let the external handler process.\r\n externalHandler(linkInfo.url);\r\n return { handled: true, linkInfo: linkInfo };;\r\n }\r\n return { handled: false, linkInfo: linkInfo };\r\n}","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport utils from \"../../utils\";\r\nimport { handleElementLink } from \"./handleLink\";\r\n\r\nexport function SiteLink(props) {\r\n const { children, to, target, onClick, ...other } = props;\r\n\r\n function goToLink(e) {\r\n try {\r\n const isCmsEdit = document.querySelector(\"body\").classList.contains(\"cmsedit\");\r\n if (isCmsEdit) {\r\n e.preventDefault();\r\n return;\r\n }\r\n } catch (e) {}\r\n\r\n //console.log(e, e.target);\r\n if (onClick) onClick(e);\r\n const processed = handleElementLink(e.target);\r\n //console.log(processed)\r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n return utils.url.isExternalLink(to) ? (\r\n goToLink(e)} {...other}>\r\n {children}\r\n \r\n ) : (\r\n goToLink(e)} {...other}>\r\n {children}\r\n \r\n );\r\n}\r\n","import { css } from '@emotion/core'\r\nimport { mixin, mq } from '../../cssInJs'\r\n\r\nexport default {\r\n tiles: css(mq({\r\n marginLeft: [0, -5, null, -10],\r\n marginRight: [0, -5, null, -10],\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexWrap: 'wrap'\r\n })),\r\n tile: css(mq({\r\n flexBasis: ['50%', '33.33%', '25%', '25%', '20%', '16.66%'],\r\n padding: [0, 5, null, 10],\r\n cursor: 'pointer'\r\n })),\r\n tileImage: css({\r\n position: 'relative',\r\n display: 'block',\r\n ':after': { ...mixin.overlay() },\r\n ':hover, :focus': {\r\n ':after': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n }\r\n }\r\n }),\r\n tileIcon: css({\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n fontSize: 30,\r\n color: 'white',\r\n zIndex: 1\r\n })\r\n}","import React from 'react';\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport env from '../../env';\r\nimport utils from '../../utils';\r\nimport { useGet, ErrorPopup, Loading } from '../../components';\r\nimport style from './feedStyle';\r\nimport {FaRegCaretSquareRight, FaRegClone} from 'react-icons/fa';\r\n\r\nexport function InstagramFeed(props){\r\n const get = useGet();\r\n\r\n React.useEffect(() => {\r\n get.send(env.apiBase + `/api/instagram/GetInstagramFeeds`);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (get.loading()) {\r\n return \r\n } else if (get.hasErrors()) {\r\n return \r\n }\r\n\r\n // console.log(get)\r\n const data = get.response;\r\n if (data.length === 0) return null\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Feeds({posts}) {\r\n const numOfTileLines = 2;\r\n const bp = utils.ui.getCurrentBreakpoint();\r\n const tilesPerLine = {xs:2, sm:3, md:4, lg:4, xl:5, xxl:6}\r\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 6);\r\n console.log(bp, numOfTileLines, numOfPost)\r\n const displayingPosts = posts.length > numOfPost ? posts.slice(0, numOfPost) : posts;\r\n\r\n return (\r\n
\r\n {displayingPosts.map((item, index) =>\r\n )}\r\n
\r\n )\r\n}\r\n\r\nfunction Feed({item}) {\r\n return (\r\n \r\n )\r\n}","import React from 'react';\r\nimport utils from '../../utils';\r\nimport * as yt from './iframeApi';\r\n\r\nexport function YoutubeEmbed({ url, title }) {\r\n const videoId = yt.getYoutubeCode(url);\r\n //const posterImageUrl = yt.thumbnailMax(videoId);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 1,\r\n 'loop': 0,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","\n// common section or pages\nexport { NotFound } from './notFound/notFound';\nexport { AppVersion, AppVersionPage } from '../lib/app-version/app-version-v2';\nexport { Button } from './form/buttons/button';\nexport { ErrorMessage, ErrorPopup } from '../lib/ui-error';\nexport { Loading } from '../lib/ui-loading-v2';\n\n// common functions\nexport { usePost, useGet } from '../lib/net-api';\nexport { MediaQueryStatus } from '../lib/dev-mediaQueryStatus';\nexport { MetaTag } from '../lib/seo';\n\nexport { au } from '../lib/animation';\nexport { useInstagram } from '../lib/instagram-useInstagram';\nexport { useParallax } from '../lib/ui-parallax';\nexport { useRouter, useHistory, useHistoryStore, handleElementLink, SiteLink } from '../lib/router'\n\n\n// modules\nexport { InstagramFeed } from '../lib/instagram-feed';\n\nexport { YoutubeBanner, YoutubeEmbed, YoutubeEmbedPopup } from '../lib/youtube';","import utils from '../../utils';\r\n\r\nexport function loadApi(onApiReady) {\r\n if (typeof window !== `undefined` && !window.YT) { // If not, load the script asynchronously\r\n const tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n\r\n // onYouTubeIframeAPIReady will load the video after the script is loaded\r\n window.onYouTubeIframeAPIReady = () => onApiReady(true);\r\n\r\n const firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n } else { // If script is already there, load the video directly\r\n onApiReady(false);\r\n }\r\n}\r\n\r\n// export function player(playerId, videoId, playerVars = {}, events = {}) {\r\n// //let player = null;\r\n// const defaultPlayerVars = {\r\n// 'autoplay': 1,\r\n// 'controls': 0,\r\n// 'loop': 1,\r\n// 'showinfo': 0,\r\n// 'rel': 0,\r\n// 'modestbranding': 1,\r\n// 'origin': window.location.origin,\r\n// 'allowfullscreen': true,\r\n// 'wmode': 'transparent'\r\n// }\r\n// const defaultEvents = {\r\n// 'onStateChange': (e) => { },\r\n// 'onReady': (e) => { console.log('onReady'); player.mute() },\r\n// 'onError': (e) => { console.log(e) }\r\n// }\r\n\r\n// const player = new window.YT.Player(playerId, {\r\n// videoId: videoId,\r\n// playerVars: Object.assign({}, defaultPlayerVars, playerVars),\r\n// events: Object.assign({}, defaultEvents, events),\r\n// });\r\n// return player;\r\n// }\r\n\r\nexport function thumbnailMax(videoId){\r\n return `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`\r\n}\r\n\r\n// onPlayerStateChange(event){\r\n// switch (event.data){\r\n// case window['YT'].PlayerState.PLAYING:\r\n// //console.log('Playing');\r\n// //this.player.mute();\r\n// break;\r\n// case window['YT'].PlayerState.PAUSED:\r\n// //console.log('Pafdsu');\r\n// break;\r\n// case window['YT'].PlayerState.ENDED:\r\n// //console.log('ended ');\r\n// //this.player.playVideo();\r\n// this.player.stopVideo();\r\n// break;\r\n// }\r\n// }\r\n\r\n// toggleBannerYoutueInCMS(toggleItem:string){ \r\n// if(toggleItem == 'youtube'){\r\n// //location.reload();\r\n// this.toggleBannerOrYoutube = toggleItem;\r\n// this.player.playVideo();\r\n// this.init();\r\n// }\r\n// else{\r\n// this.toggleBannerOrYoutube = toggleItem;\r\n// this.player.stopVideo();\r\n// }\r\n// }\r\n\r\n\r\nexport function getYoutubeCode(src) {\r\n // if (src.indexOf('http') >= 0) {\r\n // if (src.indexOf('v=') >= 0) {\r\n // return src.split('v=')[1];\r\n // }\r\n // }\r\n // return src;\r\n return utils.url.getYoutubeId(src);\r\n}","function payload(item, key, defaultVal = '') {\n const found = item.payloads.find(x => x.key === key);\n return found ? found.value : defaultVal;\n}\n\nfunction findItemByTypeCode(pageData, itemTypeCode) {\n if (!pageData) return null;\n for (let i = 0; i < pageData.sections.length; i++) {\n const section = pageData.sections[i];\n const found = findItem(section.items, itemTypeCode);\n if (found) return found;\n }\n return null;\n}\n\nfunction findItem(items, itemTypeCode) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.itemTypeCode === itemTypeCode) {\n return item;\n }\n const found = findItem(item.items, itemTypeCode);\n if (found) {\n return found;\n }\n }\n return null;\n}\n\nexport default { payload, findItemByTypeCode };","import React from 'react';\nimport { Item } from '../../items/item';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport Slider from \"react-slick\";\n\nexport function BannerPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n\n const slides = subItems.map((subItem, index) =>\n \n );\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: true,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1\n };\n\n const cssClass = utils.classNames('cms_item', 'bannerPanel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\n\n return (\n
\n \n {slides}\n \n
\n );\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nexport function BannerItem(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n //console.log('item', linkUrl);\n const titlePanel = captionTitle ? (\n linkUrl ? (
\n
\n READ MORE\n
\n ) : (
)\n ) : null;\n\n const linkOverlay = linkUrl && !captionTitle ? (\n \n ) : null;\n\n const cssClass = utils.classNames('cms_item', 'banner-item', 'bannerSize', item.cssClass || item.anchorName || '', titlePanel && 'bannerHasTitlePanel');\n\n return (\n
\n {titlePanel &&
{titlePanel}
}\n {linkOverlay && linkOverlay}\n
\n );\n\n\n}\n","import React, { Fragment } from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Item } from '../../items/item';\nimport utils from '../../../utils';\n\nexport function Panel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n const bgColor = cmsUtils.payload(item, 'BgColor');\n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\n //console.log(bgTheme)\n\n\n let bgUrl = null;\n if (imageUrl)\n bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\n\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '');\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n\n return (\n
\n
\n
\n {subItemsElts}\n
\n\n {\n (item.cssClass && item.cssClass === 'tile-card-panel') &&\n \n
\n \n \n \n \n \n
\n\n
\n
\n banna\n
\n
\n spinach\n
\n
\n
\n
\n\n
\n
\n watermelon\n
\n
\n \n
\n }\n\n
\n );\n}\n","import React, { useLayoutEffect, useRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\n\nimport { useRouter } from \"../../../components\";\n\nimport { handleElementLink } from \"../../../components\";\nimport env from \"../../../env\";\n\n//import { Document, Page } from 'react-pdf'\n//import { Document, Page } from 'react-pdf/dist/entry.webpack';\n\nexport function Html(props) {\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const { history } = useRouter();\n //const [ pdfViewPath, setPdfViewPath ] = React.useState(null)\n //console.log('item', item, cmsOption);\n\n let content = cmsOption.isCmsEdit\n ? cmsUtils.payload(item, \"Content\")\n : cmsUtils\n .payload(item, \"Content\")\n .replace(\n \"__version__\",\n \" PWA \" + ver + \"\"\n );\n\n content = content.replace(\n /

 <\\/h2>/g,\n `

 

`\n );\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"htmlPanel\",\n cmsOption.isCmsEdit && \"html\",\n item.cssClass || item.anchorName || \"\"\n );\n\n //let itemElt = (
);\n\n function handleClick(e) {\n let target = \"\";\n if (e.target.closest(\"a\")) {\n target = e.target.closest(\"a\").getAttribute(\"target\");\n }\n const processed =\n target === \"_blank\"\n ? handleElementLink(e.target, null)\n : handleElementLink(e.target);\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n\n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === \"internal\") {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url);\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n\n if (e.target.closest(\"a\")) {\n let href = e.target.closest(\"a\").getAttribute(\"href\") + \"\";\n if (href.indexOf(\"#\") !== -1) {\n let _href = href.split(\"#\");\n console.log(\"_href\", _href);\n let el = document.querySelector(\n 'section[data-cms-item-anchor=\"' + _href[1] + '\"]'\n );\n let anchorStatus = el.getAttribute(\"data-anchor-status\");\n if (anchorStatus === \"collapse\") {\n el.setAttribute(\"data-anchor-status\", \"expand\");\n el.classList.add(\"expand\");\n } else {\n el.setAttribute(\"data-anchor-status\", \"collapse\");\n el.classList.remove(\"expand\");\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n }\n //console.log(pdfViewPath)\n const pdfView =\n // pdfViewPath ?\n // :\n null;\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n if (!cmsOption.isCmsEdit) {\n replaceEmbedCodes(htmlBlock.current, cmsOption);\n }\n\n const buttons = htmlBlock.current.querySelectorAll(\".button\");\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i]);\n }\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n }, [cmsOption]);\n\n return (\n <>\n handleClick(e)}\n >\n {pdfView}\n \n );\n}\n\nfunction restructureButton(el) {\n if (!el.querySelector(\"span\")) {\n const span = document.createElement(\"span\");\n span.innerHTML = el.innerHTML;\n el.innerHTML = \"\";\n el.appendChild(span);\n }\n}\n\nfunction replaceEmbedCodes(block, cmsOption) {\n const embedDataList = cmsOption?.pageData?.embedDataList;\n const embedCodes = block.querySelectorAll(\"[data-embed-jaba]\");\n embedCodes.forEach((embed) => {\n const id = embed.getAttribute(\"data-embed-jaba\");\n const found = utils.array.find(embedDataList, (x) => x.id === id);\n if (found) {\n //console.log(found)\n ReactDOM.render(\n ,\n embed\n );\n }\n });\n //console.log(embedCodes, embedDataList)\n}\n","import React from 'react';\nimport { Item } from '../../items/item';\n\nexport function TestimonialPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n let itemElt = (
{item.itemTypeCode}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Item } from '../../items/item';\n\nexport function TestimonialItem(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n //const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const title = cmsUtils.payload(item, 'Title');\n //const desc = cmsUtils.payload(item, 'Desc');\n const bottomText = cmsUtils.payload(item, 'BottomText');\n //const ratingStar = cmsUtils.payload(item, 'RatingStar');\n //const alt = cmsUtils.payload(item, 'Alt');\n\n let itemElt = (
{item.itemTypeCode} {title} {bottomText}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\n\nexport function ImagePanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n //console.log(cmsOption)\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n \n const cssClass = utils.classNames('cms_item', 'imagePanel', 'parallax', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = cmsOption.pageOptions && cmsOption.pageOptions.imagePath ?\n utils.site.resourcePath(cmsOption.pageOptions.imagePath):\n utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n return (\n
\n
\n );\n\n\n}\n","import { css } from '@emotion/core';\nimport { variables, mq } from '../../../cssInJs';\n\nconst breakpoints = [2, 2, 3, 4]\nconst marginLR = [14, 14, 14, 14]\nconst marginTB = [14, 14, 14, 14]\n\nconst bpPer = (index) => 100 / breakpoints[index] + '%'\n\nexport default {\n holder: css(mq({\n maxWidth: 1000,\n margin: 'auto',\n marginTop: [30, null, 40],\n marginBottom: [30, null, 40],\n '.slick-prev, .slick-next': {\n top: '70px',\n transform: 'translate(0, 0)',\n },\n '.slick-prev': {\n left: [10, null, -20]\n },\n '.slick-next': {\n right: [10, null, -20]\n },\n '.slick-prev:before, .slick-next:before': {\n color: variables.fontColor\n }\n })),\n tiles: css(mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginLeft: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginRight: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n marginBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n })),\n tilesSlider: css(mq({\n display: 'block',\n })),\n tile: css(mq({\n paddingLeft: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingRight: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n paddingBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n maxWidth: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexBasis: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexGrow: 0,\n flexShrink: 0,\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n })),\n tileSlider: css(mq({\n maxWidth: '100% !important'\n })),\n tileBg: css(mq({\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n height: 0,\n paddingBottom: '56.25%'\n })),\n title: css(mq({\n fontFamily: variables.familyHeader,\n fontSize: '0.95rem',\n fontWeight: 'bold',\n margin: '0.5rem 0 0.1rem',\n })),\n desc: css(mq({\n fontSize: '0.8rem',\n })),\n readMore: css(mq({\n marginTop: 'auto',\n paddingTop: 15,\n })),\n readMoreBtn: css(mq({\n display: 'inline-block',\n color: 'white',\n fontFamily: variables.familyHeader,\n background: variables.primaryColor,\n padding: '0.1rem 0.6rem',\n fontSize: '0.8rem',\n fontWeight: 'bold',\n '&:hover': {\n background: variables.linkHoverColor,\n color: 'white',\n textDecoration: 'none',\n }\n }))\n}","import { css } from '@emotion/core';\nimport { variables, mq } from '../../../cssInJs';\nimport { rgba } from 'polished';\n\nconst breakpoints = [1, 2, 2, 3]\nconst marginLR = [14, 14, 14, 14]\nconst marginTB = [14, 14, 14, 14]\n\nconst bpPer = (index) => 100 / breakpoints[index] + '%'\n\nexport default {\n holder: css(mq({\n maxWidth: 1600,\n margin: 'auto',\n marginTop: [30, null, 40],\n marginBottom: [30, null, 40],\n '.slick-prev, .slick-next': {\n top: '70px',\n transform: 'translate(0, 0)',\n },\n '.slick-prev': {\n left: [10, null, -20]\n },\n '.slick-next': {\n right: [10, null, -20]\n },\n '.slick-prev:before, .slick-next:before': {\n color: variables.fontColor\n }\n })),\n tiles: css(mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginLeft: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginRight: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n marginBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n })),\n tilesSlider: css(mq({\n display: 'block',\n })),\n tile: css(mq({\n paddingLeft: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingRight: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n paddingBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n maxWidth: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexBasis: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexGrow: 0,\n flexShrink: 0,\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n })),\n linkWrapper: css({\n position: 'relative',\n textDecoration: 'none',\n borderBottom: `1px solid ${rgba(variables.fontColor, 0.3)}`,\n '&:hover, &:focus': {\n textDecoration: 'none',\n '.tileTitle': {\n background: variables.fontColor,\n color: 'white',\n textDecoration: 'none',\n paddingLeft: '0.7rem',\n }\n }\n }),\n tileSlider: css(mq({\n maxWidth: '100% !important'\n })),\n tileBg: css(mq({\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n height: 0,\n paddingBottom: '100%'\n })),\n title: css(mq({\n width: '100%',\n //transition: 'background-color 0.7s, color 0.25s, font-weight 0.25s',\n transition: 'all 0.4s',\n textTransform: 'uppercase',\n //background: 'rgba(255, 255, 255, 0.8)',\n color: variables.fontColor,\n fontFamily: variables.familyHeader,\n fontWeight: 'bold',\n textAlign: 'left',\n // padding: ['0.3rem 0.5rem', '0.6rem 1rem', null, '0.6rem 1rem 0.6rem 3rem'],\n // fontSize: ['1rem', '1.2rem', null, '1.6rem'],\n padding: ['0.3rem 0'],\n fontSize: ['1rem', null, null, '1rem'],\n }))\n}","import { css } from '@emotion/core'\nimport { variables, mq } from '../../../cssInJs'\nimport { rgba } from 'polished'\n\nconst breakpoints = [1, 2, 2, 3]\nconst marginLR = [14, 14, 14, 14]\nconst marginTB = [14, 14, 14, 14]\n\nconst bpPer = (index) => 100 / breakpoints[index] + '%'\n\nexport default {\n holder: css(\n mq({\n maxWidth: 1600,\n margin: 'auto',\n marginTop: [30, null, 40],\n marginBottom: [30, null, 40],\n '.slick-prev, .slick-next': {\n top: '70px',\n transform: 'translate(0, 0)',\n },\n '.slick-prev': {\n left: [10, null, -20],\n },\n '.slick-next': {\n right: [10, null, -20],\n },\n '.slick-prev:before, .slick-next:before': {\n color: variables.fontColor,\n },\n })\n ),\n tiles: css(\n mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginLeft: [\n -marginLR[0] / 2,\n -marginLR[1] / 2,\n -marginLR[2] / 2,\n -marginLR[3] / 2,\n ],\n marginRight: [\n -marginLR[0] / 2,\n -marginLR[1] / 2,\n -marginLR[2] / 2,\n -marginLR[3] / 2,\n ],\n marginTop: [\n marginTB[0] / 2,\n marginTB[1] / 2,\n marginTB[2] / 2,\n marginTB[3] / 2,\n ],\n marginBottom: [\n marginTB[0] / 2,\n marginTB[1] / 2,\n marginTB[2] / 2,\n marginTB[3] / 2,\n ],\n })\n ),\n tilesSlider: css(\n mq({\n display: 'block',\n })\n ),\n tile: css(\n mq({\n paddingLeft: [\n marginLR[0] / 2,\n marginLR[1] / 2,\n marginLR[2] / 2,\n marginLR[3] / 2,\n ],\n paddingRight: [\n marginLR[0] / 2,\n marginLR[1] / 2,\n marginLR[2] / 2,\n marginLR[3] / 2,\n ],\n paddingTop: [\n marginTB[0] / 2,\n marginTB[1] / 2,\n marginTB[2] / 2,\n marginTB[3] / 2,\n ],\n paddingBottom: [\n marginTB[0] / 2,\n marginTB[1] / 2,\n marginTB[2] / 2,\n marginTB[3] / 2,\n ],\n maxWidth: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexBasis: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexGrow: 0,\n flexShrink: 0,\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n })\n ),\n linkWrapper: css({\n height: '100%',\n position: 'relative',\n textDecoration: 'none',\n borderBottom: `1px solid ${rgba(variables.fontColor, 0.3)}`,\n '&:hover, &:focus': {\n textDecoration: 'none',\n '.tileTitle': {\n background: variables.fontColor,\n color: 'white',\n textDecoration: 'none',\n paddingLeft: '0.7rem',\n },\n },\n }),\n tileSlider: css(\n mq({\n maxWidth: '100% !important',\n })\n ),\n tileBg: css(\n mq({\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n height: 0,\n paddingBottom: '100%',\n })\n ),\n title: css(\n mq({\n width: '100%',\n //transition: 'background-color 0.7s, color 0.25s, font-weight 0.25s',\n transition: 'all 0.4s',\n textTransform: 'uppercase',\n //background: 'rgba(255, 255, 255, 0.8)',\n color: variables.fontColor,\n fontFamily: variables.familyHeader,\n fontWeight: 'bold',\n textAlign: 'left',\n // padding: ['0.3rem 0.5rem', '0.6rem 1rem', null, '0.6rem 1rem 0.6rem 3rem'],\n // fontSize: ['1rem', '1.2rem', null, '1.6rem'],\n padding: ['0.3rem 0'],\n fontSize: ['1rem', null, null, '1rem'],\n })\n ),\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport styleDefault from \"./tileStyle\";\nimport styleBig from \"./tileStyle--big\";\nimport styleRecipe from \"./tileStyle--recipe\";\n\n//import React from 'react';\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\nimport { SiteLink } from \"../../../components\";\n\nimport Slider from \"react-slick\";\n\nexport function PageTiles(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n const useSlider = cmsUtils.payload(item, \"UseSlider\") === \"slider\";\n const sliderStyle = cmsUtils.payload(item, \"SliderStyle\", \"default\");\n let style = \"\";\n\n if (sliderStyle === \"big\") {\n style = styleBig;\n } else if (sliderStyle === \"recipe\") {\n style = styleRecipe;\n } else {\n style = styleDefault;\n }\n\n const pages = getPages(cmsUtils.payload(item, \"PageObjects\"));\n const pageTileElts =\n sliderStyle === \"big\" ? (\n pages.map((page, index) => (\n \n ))\n ) : sliderStyle === \"recipe\" ? (\n
\n

\n Related Recipes\n

\n
\n {pages.map((page, index) => (\n \n ))}\n
\n
\n ) : (\n pages.map((page, index) => (\n \n ))\n );\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n //fade: false,\n autoplay: true,\n slidesToShow: 4,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ],\n };\n\n //const cssClass = utils.classNames('cms_item', 'pageTiles tiles', `tileStyle--${sliderStyle}`, useSlider && 'useSlider', item.cssClass || item.anchorName || '');\n const cssClass = utils.classNames(\n \"cms_item\",\n item.cssClass || item.anchorName || \"\"\n );\n\n if (useSlider) {\n return (\n \n
\n {pageTileElts}\n
\n \n );\n } else {\n return (\n \n
{pageTileElts}
\n \n );\n }\n\n function Tile({ page, disableLink, useSlider }) {\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n return (\n
\n \n
\n
{page.pageTitle}
\n {(page.tileDesc || page.description) && (\n
{page.tileDesc || page.description}
\n )}\n
\n
\n \n READ MORE\n \n
\n
\n );\n }\n\n function TileBig({ page, disableLink, useSlider }) {\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n return (\n
\n \n
\n
\n
\n {page.pageTitle}\n
\n
\n \n \n );\n }\n\n function TileRecipe({ page, disableLink, useSlider }) {\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n return (\n
\n \n
\n
\n
\n {page.pageTitle}\n
\n
\n \n \n );\n }\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nexport function SingleBanner(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const alignV = cmsUtils.payload(item, 'AlignV') || '50%';\n\n const cssClass = utils.classNames('cms_item', 'single-banner', 'banner-item', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n const titlePanel = captionTitle ? (\n linkUrl ? (\n
\n
) : (
)\n ) : null;\n\n return (\n
\n {titlePanel &&
{titlePanel}
}\n
\n );\n\n\n}\n","import { fb, validators } from \"../../../lib/form\";\nimport utils from \"../../../utils\";\n\nlet stateList = [\"ACT\", \"NSW\", \"NT\", \"QLD\", \"SA\", \"TAS\", \"VIC\", \"WA\"].map((x) => {\n return { name: x, value: x };\n});\nstateList = [{ name: \"State*\", value: \"\" }, ...stateList];\n\nexport function getContactModel(data) {\n const fields = {\n ...{\n modelNumber: [data.modelNumber || \"\", [], { label: \"Product Model Number\", type: \"text\" }],\n name: [data.name || \"\", [validators.Required()], { label: \"Name\", type: \"text\" }],\n phone: [data.phone || \"\", [validators.Required()], { label: \"Phone\", type: \"text\" }],\n email: [data.email || \"\", [validators.Required(), validators.Email()], { label: \"Email\", type: \"email\" }],\n enquiry: [data.enquiry || \"\", [validators.Required()], { label: \"Your Message\", type: \"textarea\" }],\n },\n ...(utils.site.isNZ\n ? {}\n : {\n state: [data.state || \"\", [validators.Required()], { label: null, type: \"select\", options: stateList }],\n }),\n };\n\n const model = fb.group(fields);\n\n return model;\n}","//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const pageView = (url, pageTitle = null) => {\r\n if (!hasGTM()) return;\r\n\r\n const pageOpt = pageTitle ? {\r\n path: url,\r\n title: pageTitle\r\n } : { path: url }\r\n //console.log(url, pageOpt)\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: pageOpt\r\n })\r\n}\r\n\r\n// \r\nexport const sendEvent = (eventName, params) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n}\r\n\r\nexport const sendGAEvent = (category, action, label, value) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: 'gaEvent' }, { category: category || '', action: action || '', label: label || '', value: value || '' }))\r\n}\r\n//#endregion\r\n\r\n\r\n","import React from \"react\";\nimport env from \"../../../env\";\nimport { usePost } from \"../../../components\";\nimport { useForm } from \"../../../form\";\nimport { Button, ErrorMessage } from \"../../../components\";\nimport { getContactModel } from \"./contactFormModel\";\nimport { gtm } from \"../../../lib/tracking\";\nimport { useRouter } from \"../../../components\";\nimport utils from \"../../../utils\";\n\nexport function Contact(props) {\n const { query } = useRouter();\n const modelNumber = query.modelNumber || \"\";\n const model = getContactModel({ modelNumber: modelNumber });\n\n const emailReceiver = props.emailReceiver;\n const form = useForm(model, { usePlaceholder: true });\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), emailReceiver: emailReceiver };\n post.send(env.apiBase + \"/api/contact/send\", value);\n setSendingStatus(\"pending\");\n });\n\n console.log(\"submitting\");\n }\n\n // if (status === 'done') {\n // //navigate(`/task/view/${taskId}`)\n // window.location.reload();\n // }\n\n if (post.done() && sendingStatus === \"pending\") {\n var value = form.getValue();\n gtm.sendEvent(\"contactFormSubmitted\", { contactEmail: value.email });\n form.reset(model);\n setSendingStatus(null);\n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render(\"name\")}
\n
{render(\"phone\")}
\n
{render(\"email\")}
\n
\n
\n
\n {render(\"modelNumber\")}\n
\n This can be found on the product packaging, instruction manual, or on the product itself.\n
\n
\n {utils.site.isNZ ? null :
{render(\"state\")}
}\n
\n
\n
\n
{render(\"enquiry\")}
\n
\n
\n
\n

\n By clicking 'Send Message' you accept the terms of our{\" \"}\n \n Privacy Policy\n \n .\n

\n
\n \n \n \n {post.done() && Successfully sent!}\n
\n
\n
\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { Contact } from './contactForm';\n\nexport function ContactForm(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, cmsOption);\n\n const emailReceiver = cmsUtils.payload(item, 'EmailReceiver');\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n return (\n
\n\n
\n \n
\n\n
\n )\n}","import React, { useState, useRef } from 'react';\r\nimport utils from '../../utils';\r\nimport { debounce } from '../utils-core/debounce';\r\nimport * as yt from './iframeApi';\r\nimport { FiVolumeX, FiVolume2 } from 'react-icons/fi';\r\nimport { FaRegPlayCircle } from 'react-icons/fa';\r\nimport ModalVideo from 'react-modal-video'\r\n\r\n\r\nexport function YoutubeBannerMobilePopup(props) {\r\n const youtubeBannerRef = React.useRef(null);\r\n\r\n const [playerStatus, setPlayerStatus] = useState('loading');\r\n const [playerSize, setPlayerSize] = useState(null);\r\n const [ytPlayer, setYtPlayer] = useState(null);\r\n const [muted, setMuted] = useState(true);\r\n const countPlayedRef = useRef(0);\r\n const [popupOpened, setPopupOpened] = useState(false);\r\n const { heightSet, videoLinkOrId, playerId } = props.video;\r\n const videoId = yt.getYoutubeCode(videoLinkOrId);\r\n //const posterImageUrl = yt.thumbnailMax(videoId);\r\n const posterImageUrl = (props.posterImageUrl && props.posterImageUrl !== '') ? props.posterImageUrl : yt.thumbnailMax(videoId);\r\n const mobileImageUrl = props.mobileImageUrl;\r\n //let countPlayed = 0;\r\n const canPlayVideo = () => (typeof window !== `undefined` && typeof props.canPlayVideo === `undefined`)? window.innerWidth >= 1200 : !!(typeof props.canPlayVideo === 'function'? props.canPlayVideo() : props.canPlayVideo);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 0,\r\n 'loop': 1,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n //console.log('videoId: ' + videoId)\r\n //const canPlayVideo = () => window.innerWidth >= 1200\r\n React.useEffect(() => {\r\n const resized = debounce(() => {\r\n loadVideo();\r\n });\r\n loadVideo();\r\n if (typeof window !== `undefined`)\r\n window.addEventListener('resize', resized)\r\n return () => {\r\n if (typeof window !== `undefined`)\r\n window.removeEventListener('resize', resized)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n \r\n function loadVideo() {\r\n if (youtubeBannerRef.current)\r\n setPlayerSize(getSize(youtubeBannerRef.current));\r\n if (canPlayVideo()) {\r\n yt.loadApi((loadJs) => {\r\n loadJs ? init() : setTimeout(init, 100)\r\n })\r\n }\r\n }\r\n\r\n function init() {\r\n let player = null;\r\n if (typeof window !== `undefined`) {\r\n player = new window.YT.Player(playerId, {\r\n events: {\r\n 'onStateChange': (e) => {\r\n switch (e.data) {\r\n // case window.YT.PlayerState.PLAYING:\r\n // break;\r\n // case window.YT.PlayerState.PAUSED:\r\n // break;\r\n case window.YT.PlayerState.ENDED:\r\n const countPlayed = countPlayedRef.current;\r\n if (countPlayed < 3 - 1) {\r\n //console.log('ended', countPlayed + 1);\r\n countPlayedRef.current = countPlayed + 1;\r\n if (player && player.playVideo)\r\n player.playVideo();\r\n } else {\r\n setPlayerStatus('finished');\r\n }\r\n break;\r\n default:\r\n }\r\n },\r\n 'onReady': (e) => {\r\n //console.log('onReady');\r\n if (player && player.mute && player.playVideo) {\r\n player.mute();\r\n player.playVideo();\r\n }\r\n setTimeout(() => setPlayerStatus('loaded'), 1000)\r\n },\r\n 'onError': (e) => { console.log(e) }\r\n }\r\n });\r\n\r\n setYtPlayer(player);\r\n }\r\n }\r\n\r\n function soundToggle(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (ytPlayer){\r\n if (muted) {\r\n setMuted(false);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.unMute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n } else {\r\n setMuted(true);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.mute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n }\r\n }\r\n\r\n //https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\r\n }\r\n\r\n function playVideo() {\r\n setPopupOpened(true)\r\n }\r\n\r\n const canPlay = canPlayVideo();\r\n const imageUrl = !canPlay && mobileImageUrl ? mobileImageUrl : posterImageUrl;\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {canPlay && playerSize && }\r\n {canPlay && playerStatus === 'loaded' &&
\r\n {/* {muted? : } */}\r\n {muted? : }\r\n
}\r\n\r\n {!canPlay && !mobileImageUrl &&
\r\n \r\n
}\r\n
\r\n setPopupOpened(false)} />\r\n
\r\n );\r\n}\r\n\r\nfunction getSize(container) {\r\n const containerSize = container ? { w: container.offsetWidth, h: container.offsetHeight } : { w: window.innerWidth, h: window.innerHeight }\r\n const overSize = 1;\r\n const rate = 9 / 16;\r\n const w = containerSize.w * overSize;\r\n const h = containerSize.h * overSize;\r\n const size = { width: w, height: w * rate, left: 0, top: 0 };\r\n if (size.height < h) {\r\n // stretch horizontally\r\n size.height = h;\r\n size.width = h / rate;\r\n }\r\n\r\n //console.log(size)\r\n size.left = -(size.width - containerSize.w) / 2;\r\n size.top = -(size.height - containerSize.h) / 2;\r\n return size;\r\n}\r\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { YoutubeBannerMobilePopup } from '../../../lib/youtube/youtubeBanner--mobilePopup';\n\nexport function YoutubeBannerPanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\n const playerId = 'ytBanner-' + (item.itemId).substr(0, 8);\n\n const video = {\n heightSet: heightSet,\n videoLinkOrId: videoCode,\n playerId: playerId\n }\n\n //const enableYoutube = env.isProd;\n \n const cssClass = utils.classNames('cms_item', 'youtubePanel', item.cssClass || item.anchorName || '');\n //const canPlayVideo = () => utils.css.screenWidth() >= 1200;\n const canPlayVideo = (() => {\n if(cssClass.includes('gourmet-pro')){\n return true;\n }\n return utils.css.screenWidth() >= 1200;\n });\n\n return (\n
\n {/* {canPlayVideo() ? : } */}\n \n
\n );\n\n}","import { mq } from '../../cssInJs';\n\nexport default {\n products: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n productCol: mq({\n flex: ['1 0 100%', '1 0 50%', '1 0 25%'],\n display: 'flex',\n flexDirection: 'column',\n maxWidth: [null, '50%', '25%' ]\n }),\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport React from \"react\";\nimport env from \"../../env\";\nimport { SiteLink } from \"../../components\";\nimport { usePost } from \"../../components\";\nimport { ErrorPopup, Loading } from \"../../components\";\nimport { useRouter } from \"../../components\";\nimport tileListStyle from \"../productTile--slider/productListStyle\";\nimport tileStyle from \"../productTile/productTileStyle\";\nimport { Tile } from \"../productTile/productTile\";\nimport { useBV } from \"../bazzarVoice/useBV\";\n\nexport function SearchResult(props) {\n const { query } = useRouter();\n const post = usePost();\n useBV(null, { showReview: null });\n\n const keyword = query.q;\n //console.log(keyword);\n\n React.useEffect(() => {\n post.send(env.apiBase + \"/api/search/search\", { keyword: keyword });\n // eslint-disable-next-line\n }, [keyword]);\n\n if (post.loading()) {\n return ;\n } else if (post.hasErrors()) {\n return ;\n }\n\n // console.log(post);\n const data = post.response;\n\n const products = data.products;\n const productsOn = products.filter(function (obj) {\n return obj.productStatus !== 98;\n });\n\n const pages = data.pages;\n console.log(\"pages ----- \", pages);\n\n if (productsOn.length === 0 && pages.length === 0)\n return (\n
\n No result found.\n
\n );\n return (\n \n {productsOn.length > 0 && (\n
\n

Products

\n \n
\n )}\n {pages.length > 0 && (\n
\n

Related Recipes

\n \n
\n )}\n
\n );\n}\n\nfunction ProductList({ products }) {\n return (\n
\n {products.map((product, index) => (\n
\n \n
\n ))}\n
\n );\n}\n\nfunction PageList({ pages }) {\n return (\n
\n {pages.map((page, index) => (\n
\n \n {page.imageUrl ? (\n \n ) : (\n \n )}\n
{page.pageTitle}
\n
\n
\n ))}\n
\n );\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport cmsUtils from '../../cms/utils/cmsUtils';\nimport { useEffect } from 'react';\n//import style from './style';\n\nexport function TextWithJavScript(props){\n\n const item = props.item;\n const cssClass = props.cssClass;\n const code = cmsUtils.payload(item, 'Code') || '';\n \n const javaScriptCode = code.substring(code.indexOf(\"\") + 9)).trim();\n const nonjavaScriptCode = code.replace(javaScriptCode, '').trim();\n console.log('nonjavaScriptCode', nonjavaScriptCode);\n\n useEffect(() => {\n \n const javaScriptTopCode = javaScriptCode.substring(javaScriptCode.indexOf(\"\") + 1)).trim();\n const javaScriptInsideCode = javaScriptCode.substring((javaScriptCode.indexOf(\">\") + 1), (javaScriptCode.indexOf(\"\"))).trim();\n\n const script = document.createElement('script');\n script.type = `text/javascript`;\n \n if(javaScriptInsideCode !== ''){\n script.text = javaScriptInsideCode;\n }\n\n if(javaScriptTopCode.includes(\"src=\")){\n let _src = javaScriptTopCode.indexOf('src=\"') === -1 ? '' : javaScriptTopCode.substring(javaScriptTopCode.indexOf('src=\"')).trim();\n let src = _src.substring((_src.indexOf('src=\"') + 5), _src.indexOf('\"',5));\n script.src = src;\n }\n\n if(javaScriptTopCode.includes(\"async\")){\n script.async = true;\n }\n\n if(javaScriptTopCode.includes(\"defer\")){\n script.defer = true;\n }\n\n if(javaScriptTopCode.includes(\"onload=\")){\n \n let _functionName = javaScriptTopCode.substring(javaScriptTopCode.indexOf('onload=') + 8);\n let functionName = _functionName.substring(0, _functionName.indexOf('\"')-1).replace('()','');\n script.onload = function(){\n window[functionName]();\n };\n }\n\n document.body.appendChild(script);\n }, [javaScriptCode]);\n\n return(\n
\n
\n )\n}","import { css } from '@emotion/core';\nimport { variables, mq } from '../../cssInJs';\n\nconst breakpoints = [2, 2, 3, 4]\nconst marginLR = [14, 14, 14, 14]\nconst marginTB = [14, 14, 14, 14]\n\nconst bpPer = (index) => 100 / breakpoints[index] + '%'\n\nconst linkText = {\n color: variables.fontColor,\n fontSize: '0.8rem',\n padding: '0 20px',\n '&:hover': {\n color: variables.fontColor,\n }\n}\n\nexport default {\n holder: css(mq({\n maxWidth: 1000,\n margin: 'auto',\n marginTop: [20, null, 20],\n marginBottom: [20, null, 20],\n '.slick-prev, .slick-next': {\n top: '100px',\n transform: 'translate(0, 0)',\n },\n '.slick-prev': {\n left: [10, null, -20]\n },\n '.slick-next': {\n right: [10, null, -20]\n },\n '.slick-prev:before, .slick-next:before': {\n color: variables.fontColor\n }\n })),\n tiles: css(mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginLeft: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginRight: [-marginLR[0] / 2, -marginLR[1] / 2, -marginLR[2] / 2, -marginLR[3] / 2],\n marginTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n marginBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n })),\n tilesSlider: css(mq({\n display: 'block',\n })),\n tile: css(mq({\n paddingLeft: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingRight: [marginLR[0] / 2, marginLR[1] / 2, marginLR[2] / 2, marginLR[3] / 2],\n paddingTop: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n paddingBottom: [marginTB[0] / 2, marginTB[1] / 2, marginTB[2] / 2, marginTB[3] / 2],\n maxWidth: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexBasis: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexGrow: 0,\n flexShrink: 0,\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column'\n })),\n tileSlider: css(mq({\n maxWidth: '100% !important'\n })),\n tileBg: css(mq({\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n height: 0,\n paddingBottom: '100%'\n })),\n title: css(mq({\n fontSize: '1.2rem',\n fontWeight: 'bold',\n margin: '0.5rem 0 0.1rem',\n })),\n desc: css(mq({\n fontSize: '0.8rem',\n })),\n productLink: css(mq({\n display: 'inline-block',\n background: variables.bgColor,\n padding: '0.1rem 0.6rem',\n fontSize: '0.8rem',\n fontWeight: 'bold',\n border: `solid 1px ${variables.bgColor}`,\n '&:hover': {\n border: 'solid 1px #000'\n }\n })),\n tileLink: {\n background: '#fff',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n padding: 5,\n '&:hover': {\n textDecoration: 'none',\n background: '#f3f3f3'\n }\n },\n prdImage: {\n padding: '0 5px',\n maxWidth: '190px',\n margin: 'auto',\n width: '100%',\n },\n bg: {\n height: 0,\n paddingBottom: '100%',\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n },\n name: css(linkText, {\n fontWeight: 'bold'\n }),\n price: css(linkText, {\n marginTop: 'auto',\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './tileStyle';\n\n//import React from 'react';\nimport utils from '../../utils';\nimport { SiteLink } from '../../components';\n\nimport Slider from \"react-slick\";\n\nexport function ProductTiles({ products }) {\n var settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n //fade: false,\n autoplay: true,\n slidesToShow: 4,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n return (\n
\n
\n \n {products.map((product, index) =>\n \n )}\n \n
\n
\n );\n}\n\n\n\nfunction Tile({ product }) {\n const imageUrl = utils.site.resourcePath(product.productThumbnail);\n return (\n
\n \n
\n
\n
\n )\n}\n","//import { css } from '@emotion/core';\n//import { variables, mq } from '../cssInJs';\n\nconst container = {\n maxWidth: '1000px',\n margin: 'auto',\n}\n\nexport {\n container\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\n\nimport React from 'react';\nimport env from '../../env';\nimport { usePost } from '../../components';\nimport { ErrorPopup, Loading } from '../../components';\nimport { ProductTiles } from '../productTile--slider/productTiles--simple';\nimport { container } from '../siteStyle';\n\nexport function Trending(props) {\n const post = usePost();\n\n React.useEffect(() => {\n post.send(env.apiBase + '/api/product/getproducts', { trendingNow: true });\n // eslint-disable-next-line\n }, []);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n const data = post.response;\n //console.log(data.results.searchResult.items)\n \n return (\n
\n

Trending Now

\n
\n \n
\n
\n );\n}","import { css } from '@emotion/core';\nimport { container } from '../siteStyle';\n\nexport default {\n productList: css(container, {\n marginTop: 40,\n marginBottom: 40,\n }),\n row1: {\n display: 'flex',\n },\n row1Col1: {\n flex: '0 0 25%',\n display: 'flex',\n flexDirection: 'column',\n },\n row1Col2: {\n flex: '0 0 50%',\n },\n row1Col3: {\n flex: '0 0 25%',\n display: 'flex',\n flexDirection: 'column',\n },\n row2: {\n display: 'flex',\n },\n row2Col: {\n flex: '0 0 25%',\n },\n row3: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n row3Col: {\n flex: '0 0 25%',\n },\n categoryImgWrapper: {\n width: '100%',\n height: '100%',\n padding: 7\n },\n categoryImg: {\n width: '100%',\n height: '100%',\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n }\n}","import { css } from '@emotion/core';\nimport { container } from '../siteStyle';\nimport { mq } from '../../cssInJs';\n\nexport default {\n productList: css(container, {\n marginTop: 40,\n marginBottom: 40,\n }),\n categoryImg: {\n margin: 10\n },\n products: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n productCol: mq({\n flex: ['1 0 100%', '1 0 50%'],\n display: 'flex',\n flexDirection: 'column',\n maxWidth: [null, '50%']\n }),\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { isMin } from '../../cssInJs'\n\nimport style from './categoryStyle';\nimport mobileStyle from './categoryMobileStyle';\nimport tileStyle from '../productTile/productTileStyle';\n\nimport React from 'react';\nimport env from '../../env';\nimport { usePost } from '../../components';\nimport { ErrorPopup, Loading } from '../../components';\n\nimport { Tile } from '../productTile/productTile';\n\nimport { useBV } from '../bazzarVoice/useBV';\nimport utils from '../../utils';\nimport { debounce } from '../../lib/utils-core/debounce';\n\nexport function ProductCategory({ category }) {\n\n const post = usePost();\n\n const [screen, setScreen] = React.useState('desktop');\n\n useBV(null, { showReview: null });\n const searchParam = { category: category };\n\n React.useEffect(() => {\n setScreen(isMin.md() ? 'desktop' : 'mobile')\n const resized = debounce(() => {\n //console.log(isMin.md())\n setScreen(isMin.md() ? 'desktop' : 'mobile')\n }, 100)\n\n window.addEventListener('resize', resized)\n return () => {\n window.removeEventListener('resize', resized)\n }\n }, [])\n\n React.useEffect(() => {\n post.send(env.apiBase + '/api/product/getProducts', searchParam);\n // eslint-disable-next-line\n }, []);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n console.log(post)\n const data = post.response.results.searchResult;\n const categoryImageUrl = utils.site.resourcePath(data.categoryImageUrl);\n\n let filtered = data.items\n \n if (data.totalCnt === 0) return
No product found.
\n\n function ProductTile({ inx }) {\n if (filtered[inx]) {\n return 3}>\n } else {\n return null;\n }\n }\n\n function MobileTiles() {\n return (\n
\n
\n {category}\n
\n
\n {filtered.map((product, index) =>\n
\n \n
\n )}\n
\n {/* {showMoreButton && (
)} */}\n
\n );\n }\n\n function DesktopTiles() {\n const restProducts = filtered.length > 8 ? filtered.slice(8) : [];\n\n return (\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n {filtered.length <= 6 ? : } \n
\n
\n {filtered.length <= 6 ? : } \n
\n
\n {filtered.length <= 6 ? : } \n
\n
\n \n
\n
\n
\n {restProducts.map((product, index) =>\n
\n \n
\n )}\n
\n {/* {showMoreButton && (
)} */}\n
\n );\n }\n\n \n if (screen === 'desktop') {\n return \n } else {\n return \n }\n}\n","import React, { Fragment } from 'react'\nimport env from '../../env'\nimport { useGet } from '../../components'\nimport { ErrorPopup, Loading } from '../../components'\n\nexport function WhereToBuyList(props) {\n const get = useGet()\n React.useEffect(() => {\n get.send(env.apiBase + '/api/store/getstores')\n // eslint-disable-next-line\n }, [])\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n console.log(get)\n const data = get.response\n\n if (data.totalCnt === 0) return
No Store found.
\n return \n}\n\nfunction Stores({ stores }) {\n return (\n
    \n {stores.map((store) => (\n
  • \n
    \n {store.storeUrl && store.storeUrl !== '' && store.buyOnline ? (\n \n \n
    {store.storeName}
    \n \n ) : (\n \n \n
    {store.storeName}
    \n
    \n )}\n\n {/* \n Buy online \n */}\n
    \n
  • \n ))}\n
\n )\n}\n","import React, { lazy, Suspense } from 'react';\nimport { Loading } from '../../components';\nconst Warranty = lazy(() => import('./warrantyForm'));\n\nexport function WarrantyLazy(props) {\n return
\n }>\n \n \n
\n}","import { css } from '@emotion/core'\nimport { variables, mq } from '../../cssInJs'\n\nconst step = css(mq({\n flex: '0 0 100%',\n opacity: 0,\n maxHeight: '300px',\n transition: 'all 0.3s',\n '>div': {\n paddingLeft: [5, 5, 100],\n paddingRight: [5, 5, 100],\n }\n}))\nconst navs = {\n navs: css(mq({\n marginTop: [5, 10, 20],\n marginBottom: 15,\n display: 'flex',\n justifyContent: 'center',\n })),\n nav: css(mq({\n width: 20,\n height: 30,\n background: '#ccc',\n margin: 5,\n transform: 'skewX(-12deg)'\n })),\n navCurrent: css({\n backgroundColor: variables.primaryColor\n }),\n navFilled: css({\n backgroundColor: '#666'\n }),\n navClickable: css({\n cursor: 'pointer'\n })\n}\n\nexport default {\n joinForm: css({\n position: 'relative',\n margin: 'auto',\n marginBottom: '3rem',\n padding: '1rem 1rem 2rem',\n background: 'rgba(255,255,255,0.9)',\n textAlign: 'left'\n }),\n\n stepsWrapper: css({\n overflow: 'hidden',\n }),\n steps: css({\n display: 'flex',\n transition: 'all 1s cubic-bezier(0.22, 0.61, 0.36, 1)',\n '& h3, & h4': {\n textTransform: 'uppercase'\n }\n }),\n step,\n stepCurrent: css(step, {\n maxHeight: '2000px',\n opacity: 1\n }),\n stepPrev: css(step, {}),\n stepNext: css(step, {}),\n stepLast: css({\n //maxHeight: '1000px',\n opacity: 1\n }),\n\n arrow: css(mq({\n position: \"absolute\",\n cursor: 'pointer',\n color: '#aaa',\n transition: 'all 0.3s',\n zIndex: '1',\n // xs, sm(>=576), md(>=768), lg(>=992), xl(>=1200), xxl(>=1600)\n top: 0,\n // [mqMax.md]: {\n // width: 100\n // },\n width: [20, 25, 30, 40],\n '&:hover': {\n color: '#666'\n }\n })),\n arrowPrev: css(mq({\n left: [-15, 0]\n })),\n arrowNext: css(mq({\n right: [-15, 0]\n })),\n\n ...navs\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport style from \"./joinStyle\";\nimport React from \"react\";\nimport env from \"../../env\";\nimport utils from \"../../utils\";\nimport { SiteLink } from \"../../components\";\n\nimport { usePost } from \"../../components\";\nimport { useForm } from \"../../form\";\nimport { useStep } from \"../warranty/useStep\";\nimport { Button, ErrorMessage } from \"../../components\";\nimport {\n getFormDataStep1,\n getFormDataStep2,\n getFormDataStep3,\n getFormDataStep5,\n} from \"./joinFormData\";\n//import { useBV } from '../bazzarVoice/useBV';\n\nexport function Join() {\n //const post = usePost();\n const {\n steps,\n currentStep,\n lastStep,\n moveTo,\n moveNext,\n markAsFilled,\n canGo,\n } = useStep([\n { id: \"name\" },\n { id: \"contact\" },\n { id: \"dob\" },\n //{ id: 'hairType' },\n { id: \"interests\" },\n { id: \"thanks\" },\n ]);\n const model1 = getFormDataStep1({});\n const form1 = useForm(model1, {});\n const model2 = getFormDataStep2({});\n const form2 = useForm(model2, {});\n const model3 = getFormDataStep3({});\n const form3 = useForm(model3, {});\n // const model4 = getFormDataStep4({})\n // const form4 = useForm(model4, {});\n const model5 = getFormDataStep5({});\n const form5 = useForm(model5, {});\n\n const navEl = React.useRef(null);\n\n const stepStyle = (index) => {\n const locStyle =\n index === currentStep\n ? style.stepCurrent\n : index === currentStep - 1\n ? style.stepPrev\n : index === currentStep + 1\n ? style.stepNext\n : style.step;\n const movingStyle = index === lastStep ? style.stepLast : null;\n return [locStyle, movingStyle];\n };\n\n function Nav() {\n if (currentStep === steps.length - 1) return null;\n return (\n
\n {steps\n .filter((x) => x.id !== \"thanks\")\n .map((step, index) => (\n moveTo(index)}\n >
\n ))}\n \n );\n }\n\n const next = () => {\n markAsFilled(currentStep);\n moveNext();\n\n if (!utils.ui.isElementInViewport(navEl.current)) {\n utils.ui.scrollTo(navEl.current);\n }\n };\n\n const onSubmit = () => {\n markAsFilled(currentStep);\n moveNext();\n\n if (!utils.ui.isElementInViewport(navEl.current)) {\n utils.ui.scrollTo(navEl.current);\n }\n };\n\n const getSelection = () => {\n const value = {\n ...form1.getValue(),\n ...form2.getValue(),\n ...form3.getValue(),\n ...form5.getValue(),\n };\n //console.log(value)\n return { productName: \"9000 CORDLESS STRAIGHTENER\", value: value };\n };\n\n return (\n
\n
\n
\n
\n \n {steps.map((step, index) => {\n let stepView = null;\n switch (step.id) {\n case \"name\":\n stepView = (\n \n );\n break;\n case \"contact\":\n stepView = (\n \n );\n break;\n case \"dob\":\n stepView = (\n \n );\n break;\n // case 'hairType': stepView = ; break;\n case \"interests\":\n stepView = (\n \n );\n break;\n case \"thanks\":\n stepView = ;\n break;\n default:\n break;\n }\n return (\n
\n {stepView}\n
\n );\n })}\n
\n
\n \n );\n}\n\nfunction Step1({ model, form, moveNext, getSelection }) {\n const render = (name) => form.renderControl(name, null);\n\n const next = (e) => {\n form.validateForm(e, () => {\n moveNext();\n });\n };\n\n return (\n
\n

Please tell us a bit about yourself

\n
\n
\n
{render(\"firstName\")}
\n
\n
\n
{render(\"lastName\")}
\n
\n {/*
\n
\n {render('gender')}\n
\n
*/}\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n );\n}\n\nfunction Step2({ model, form, moveNext, getSelection }) {\n const render = (name) => form.renderControl(name, null);\n\n const next = (e) => {\n form.validateForm(e, () => {\n moveNext();\n });\n };\n\n return (\n
\n

How can we contact you?

\n
\n
\n
{render(\"email\")}
\n
\n
\n
{render(\"mobile\")}
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n );\n}\n\nfunction Step3({ model, form, moveNext, getSelection }) {\n const render = (name) => form.renderControl(name, null);\n\n const next = (e) => {\n form.validateForm(e, () => {\n moveNext();\n });\n };\n\n return (\n
\n

Awesome!

\n

\n Let us know a bit more about yourself so that we can personalise what we\n send.\n

\n
\n
\n
{render(\"dob\")}
\n
\n
\n
{render(\"postcode\")}
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n );\n}\n\n// function Step4({ model, form, moveNext, getSelection }) {\n// const render = (name) => form.renderControl(name, null);\n\n// const next = (e) => {\n// form.validateForm(e, () => {\n// moveNext();\n// })\n// }\n\n// return
\n//

How would you describe your hair?

\n//

Choose everything that applies.

\n//
\n//
\n//
\n// {render('hairTypes')}\n//
\n//
\n//
\n//
\n//
\n// \n// \n//
\n//
\n//
\n//
\n//
\n// }\n\nfunction Step5({ model, form, onSubmit, getSelection }) {\n const render = (name) => form.renderControl(name, null);\n\n const post = usePost();\n\n // const bv = useBV({\n // showReview: null\n // });\n\n const next = (e) => {\n form.validateForm(e, () => {\n const selection = getSelection();\n post.send(env.apiBase + \"/api/join/register\", selection.value);\n });\n };\n\n if (post.status === \"done\") {\n // // send BV pixel\n // const value = getSelection().value;\n // //const modelNumber = value.modelNumber;\n // const nickname = value.firstName + ' ' + value.lastName;\n // const email = value.email;\n // const locale = env.bvLocale;\n\n // bv.sendEvent('JoinUs', 'Registration', nickname, { \"email\": email, \"locale\": locale, \"nickname\": nickname})\n\n post.reset();\n onSubmit();\n }\n\n return (\n
\n

What are you most interested in hearing about?

\n

\n Choose everything that applies.\n

\n
\n
\n
{render(\"interests\")}
\n
\n
\n
\n

\n By clicking 'Submit' you accept the terms of our{\" \"}\n \n Privacy Policy\n \n .\n

\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n );\n}\n\nfunction Step6({ getSelection }) {\n //const selection = getSelection();\n return (\n
\n

\n CONGRATULATIONS! You’ve successfully registered to Cuisinart food\n community.{\" \"}\n

\n \n

\n If you need help from our Customer Service Team simply{\" \"}\n Ask Us\n

\n
\n );\n}\n\nfunction SocialLinks() {\n const instaLink = \"https://instagram.com/cuisinart_au\";\n const youtubeLink =\n \"https://www.youtube.com/channel/UCLG_Nj8VQ37SJtAwMv2kRdw\";\n return (\n \n

\n We'll be sure to keep you in-the-loop on all that's happening in the\n Cuisinart world, but don't forget to check us out on\n \n {\" \"}\n 'the gram'{\" \"}\n \n \n and{\" \"}\n \n view our latest videos{\" \"}\n \n {\" \"}\n

\n
\n );\n}\n","import { fb, validators } from '../../form';\n\nexport function getFormDataStep1(data) {\n //const genderList = ['Female', 'Male'].map(x => { return { name: x, value: x } })\n \n const model = fb.group({\n firstName: [data.firstName || '', [validators.Required()], { label: 'First Name', type: 'text' }],\n lastName: [data.lastName || '', [validators.Required()], { label: 'Last Name', type: 'text' }],\n //gender: [data.gender || [], [validators.Required()], { type: 'radioList', options: genderList, style: { inline: false } }]\n });\n\n return model;\n}\n\nexport function getFormDataStep2(data) {\n \n const model = fb.group({\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email Address', type: 'email' }],\n mobile: [data.mobile || '', [], { label: 'Mobile (optional)', type: 'text'}]\n });\n\n return model;\n}\n\nexport function getFormDataStep3(data) {\n const model = fb.group({\n dob : [data.dob || '', [validators.Required(), validators.PastDate('Please check the date.')], { label: 'Date of Birth', type: 'dob' }],\n postcode : [data.postcode || '', [validators.Required()], { label: 'Postcode ', type: 'text' }]\n });\n\n return model;\n}\n\n\nexport function getFormDataStep4(data) {\n let hairTypeList = ['LONG', 'MEDIUM', 'SHORT', 'FINE', 'THICK', 'STRAIGHT', 'CURLY', 'NATURAL', 'FRIZZY', 'COLOURED'].map(x => { return { name: x, value: x } })\n \n const model = fb.group({\n hairTypes: [data.hairTypes || '', [validators.Required('Please select at least one.')], { label: null, type: 'checkboxList', \n options: hairTypeList, style: { inline: true, className: 'listMin3' } }]\n });\n\n return model;\n}\n\n\nexport function getFormDataStep5(data) {\n let interestList = [\n `DELICIOUS NEW RECIPES`, \n `COOKING TIPS & HINTS`, \n `PROMOTIONS & OFFERS`,\n `NEW PRODUCT RELEASES`\n ].map(x => { return { name: x, value: x } })\n\n const model = fb.group({\n interests: [data.interests || '', [validators.Required('Please select at least one.')], { label: null, type: 'checkboxList', \n options: interestList, style: { inline: false, className: 'listMin3' } }]\n });\n\n return model;\n}\n","import { css } from '@emotion/core'\nexport default {\n form: css({\n position: 'relative',\n margin: 'auto',\n marginBottom: '3rem',\n padding: '1rem 1rem 2rem',\n background: 'rgba(255,255,255,0.9)',\n textAlign: 'left',\n \n maxWidth: '960px',\n }),\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './ambassadorStyle';\nimport React from 'react';\nimport env from '../../env';\n\nimport { usePost } from '../../components';\nimport { useForm } from '../../form';\nimport { Button, ErrorMessage } from '../../components';\nimport { getFormData } from './ambassadorFormData';\n\nexport function AmbassadorForm() {\n\n const model = getFormData({})\n const form = useForm(model, {});\n const post = usePost();\n const [sendingStatus, setSendingStatus] = React.useState(null);\n\n const onSubmit = (e) => {\n form.validateForm(e, () => {\n const value = { ...form.getValue() };\n post.send(env.apiBase + \"/api/ambassador/register\", value);\n setSendingStatus('pending')\n })\n }\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n\n const render = (name) => form.renderControl(name, null);\n return
\n\n\n
\n

ABOUT YOU!

\n
\n
\n {render('name')}\n
\n
\n {render('email')}\n
\n
\n \n {/*
\n
\n {render('hairType')}\n
\n
\n {render('hairLength')}\n
\n
\n
\n
\n {render('hairConcerns')}\n
\n
*/}\n \n
\n
\n {render('favouriteProduct')}\n
\n
\n
\n
\n {render('reason')}\n
\n
\n\n

SOCIAL MEDIA

\n
\n
\n {render('website')}\n
\n
\n
\n
\n {render('websiteVisitor')}\n
\n
\n
\n
\n
\n {render('instagram')}\n
\n
\n
\n
\n {render('instagramAuFollowers')}\n
\n
\n {render('instagramNzFollowers')}\n
\n
\n
\n
\n
\n {render('facebook')}\n
\n
\n
\n
\n {render('facebookAuFollowers')}\n
\n
\n {render('facebookNzFollowers')}\n
\n
\n \n
\n
\n
\n {render('youtube')}\n
\n
\n
\n
\n {render('youtubeAuFollowers')}\n
\n
\n {render('youtubeNzFollowers')}\n
\n
\n\n
\n\n
\n
\n {render('tiktok')}\n
\n
\n
\n
\n {render('tiktokAuFollowers')}\n
\n
\n {render('tiktokNzFollowers')}\n
\n
\n\n
\n
\n
\n \n \n \n {post.done() && Successfully sent!}\n
\n
\n
\n
\n
;\n}\n","import { fb, validators } from '../../form';\n//import utils from '../../utils';\n\nexport function getFormData(data) {\n const model = fb.group({\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email Address', type: 'email' }],\n //hairType: [data.hairType || '', [validators.Required()], { label: 'Hair type', type: 'text' }],\n //hairLength: [data.hairLength || '', [validators.Required()], { label: 'Hair length', type: 'text' }],\n // hairConcerns: [data.name || '', [validators.Required()], {\n // label: 'Hair concerns', type: 'textarea',\n // style: { rows: 3 }\n // }],\n favouriteProduct: [data.favouriteProduct || '', [validators.Required()], {\n label: 'What are your current favourite Cuisinart products you’d love to use / trial', type: 'textarea',\n style: { rows: 3 }\n }],\n reason: [data.reason || '', [validators.Required()], {\n label: 'Why do you think you’d be a fabulous Cuisinart Ambassador?', type: 'textarea',\n style: { rows: 5 }\n }],\n website: [data.website || '', [], { label: 'Website/blog URL', type: 'text' }],\n websiteVisitor: [data.websiteVisitor || '', [], { label: 'Visitors per month', type: 'text' }],\n instagram: [data.instagram || '', [], { label: 'Instagram profile', type: 'text' }],\n instagramAuFollowers: [data.instagramAuFollowers || '', [], { label: 'No. of AUS followers', type: 'text' }],\n instagramNzFollowers: [data.instagramNzFollowers || '', [], { label: 'No. of NZ followers', type: 'text' }],\n facebook: [data.facebook || '', [], { label: 'Facebook profile', type: 'text' }],\n facebookAuFollowers: [data.facebookAuFollowers || '', [], { label: 'No. of AUS followers', type: 'text' }],\n facebookNzFollowers: [data.facebookNzFollowers || '', [], { label: 'No. of NZ followers', type: 'text' }],\n \n youtube: [data.website || '', [], { label: 'YouTube channel', type: 'text' }],\n youtubeAuFollowers: [data.websiteVisitor || '', [], { label: 'No. of AUS followers', type: 'text' }],\n youtubeNzFollowers: [data.websiteVisitor || '', [], { label: 'No. of NZ followers', type: 'text' }],\n\n tiktok: [data.tiktok || '', [], { label: 'Tiktok profile', type: 'text' }],\n tiktokAuFollowers: [data.tiktokAuFollowers || '', [], { label: 'No. of AUS followers', type: 'text' }],\n tiktokNzFollowers: [data.tiktokNzFollowers || '', [], { label: 'No. of NZ followers', type: 'text' }]\n\n });\n\n return model;\n}","import React from \"react\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\nimport { SearchResult } from \"../../../site/searchResult/searchResult\";\nimport { InstagramFeed } from \"../../../components\";\nimport { TextWithJavScript } from \"../../../components/TextWithJavaScript/view\";\nimport { AppVersion } from \"../../../components\";\nimport { Trending } from \"../../../site/trending/trending\";\nimport { ProductCategory } from \"../../../site/category/productCategory\";\nimport { WhereToBuyList } from \"../../../site/wheretobuy/wheretobuyList\";\nimport { WarrantyLazy } from \"../../../site/warranty/warrantyLazy\";\nimport { Join } from \"../../../site/joinus/joinForm\";\nimport { AmbassadorForm } from \"../../../site/ambassador/ambassadorForm\";\n\nexport function Code(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, cmsOption);\n\n const code = cmsUtils.payload(item, \"Code\");\n const codeType = cmsUtils.payload(item, \"CodeType\");\n let controls = null;\n if (codeType === \"Json\") {\n const codeJson = JSON.parse(code);\n if (codeJson.control === \"search-results\") {\n controls = ;\n } else if (codeJson.control === \"app\") {\n controls = ;\n } else if (codeJson.control === \"instagram\") {\n controls = ;\n } else if (codeJson.control === \"trending\") {\n controls = ;\n } else if (codeJson.control === \"product-list\") {\n controls = ;\n } else if (codeJson.control === \"warranty\") {\n controls = ;\n } else if (codeJson.control === \"join\") {\n controls = ;\n } else if (codeJson.control === \"where-to-buy-list\") {\n controls = ;\n } else if (codeJson.control === \"ambassador\") {\n controls = ;\n }\n }\n\n const cssClass = utils.classNames(\n \"cms_item\",\n item.cssClass || item.anchorName || \"\"\n );\n\n //let itemElt = (
);\n\n if (cmsOption.isCmsEdit)\n return (\n \n \n Code Type: {codeType}\n {code}{\" \"}\n \n \n );\n else if (codeType === \"Text\")\n return (\n \n );\n else if (codeType === \"TextWithJs\")\n return ;\n else\n return (\n
\n {controls}\n
\n );\n}\n","import React from \"react\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\nimport { SiteLink } from \"../../../components\";\n\nexport function BlogPosts(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const posts = getPages(cmsUtils.payload(item, \"BlogPosts\"));\n const numOfTileLines = parseInt(\n cmsUtils.payload(item, \"NumOfTileLines\", \"4\")\n );\n //console.log(numOfPost, parseInt(numOfPost));\n //console.log(posts);\n const bp = utils.ui.getCurrentBreakpoint();\n const tilesPerLine = { xs: 2, sm: 2, md: 3, lg: 3, xl: 4, xxl: 4 };\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 3);\n const step = numOfPost;\n console.log(bp, numOfTileLines, tilesPerLine, numOfPost);\n\n const [tilesToShow, setTilesToShow] = React.useState(numOfPost);\n\n const displayingPosts =\n posts.length > tilesToShow ? posts.slice(0, tilesToShow) : posts;\n const showMore = posts.length > displayingPosts.length;\n\n const pageTileElts = displayingPosts.map((page, index) => (\n \n ));\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"blogTiles tiles\",\n item.cssClass || item.anchorName || \"\"\n );\n\n return (\n <>\n \n {pageTileElts}\n \n {showMore && (\n
\n {\n setTilesToShow(tilesToShow + step);\n }}\n >\n LOAD MORE\n \n
\n )}\n \n );\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nfunction Tile(props) {\n const page = props.page;\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n return (\n
\n \n
\n
\n
{page.pageTitle}
\n
\n \n \n );\n}\n","import React from \"react\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\n\nexport function BlogPostTitle(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const title = cmsUtils.payload(item, \"PageTitle\");\n const postDate = cmsUtils.payload(item, \"PostDate\");\n\n const cssClass = utils.classNames(\n \"blogView__titleContainer\",\n \"cms_item\",\n item.cssClass || item.anchorName || \"\"\n );\n\n return (\n \n
{postDate}
\n

{title}

\n \n );\n}\n","import { css } from '@emotion/core';\nimport { mq } from '../../../cssInJs';\n\nconst breakpoints = [2, 2, 3, 4]\nconst marginLR = [14, 14, 14, 14]\nconst marginTB = [14, 14, 14, 14]\n\nconst bpPer = (index) => 100/breakpoints[index] + '%'\n\nexport default {\n holder: css(mq({\n maxWidth: 1000,\n margin: 'auto',\n marginTop: [30, null, 40],\n marginBottom: [30, null, 40],\n })),\n tiles: css(mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginLeft: [-marginLR[0]/2, -marginLR[1]/2, -marginLR[2]/2, -marginLR[3]/2],\n marginRight: [-marginLR[0]/2, -marginLR[1]/2, -marginLR[2]/2, -marginLR[3]/2],\n marginTop: [marginTB[0]/2, marginTB[1]/2, marginTB[2]/2, marginTB[3]/2],\n marginBottom: [marginTB[0]/2, marginTB[1]/2, marginTB[2]/2, marginTB[3]/2],\n })),\n tile: css(mq({\n paddingLeft: [marginLR[0]/2, marginLR[1]/2, marginLR[2]/2, marginLR[3]/2],\n paddingRight: [marginLR[0]/2, marginLR[1]/2, marginLR[2]/2, marginLR[3]/2],\n paddingTop: [marginTB[0]/2, marginTB[1]/2, marginTB[2]/2, marginTB[3]/2],\n paddingBottom: [marginTB[0]/2, marginTB[1]/2, marginTB[2]/2, marginTB[3]/2],\n maxWidth: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexBasis: [bpPer(0), bpPer(1), bpPer(2), bpPer(3)],\n flexGrow: 0,\n flexShrink: 0,\n textAlign: 'left'\n })),\n title: css(mq({\n fontSize: '1.2rem',\n fontWeight: 'bold',\n margin: '0.5rem 0 0.1rem',\n })),\n desc: css(mq({\n fontSize: '0.8rem',\n }))\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './tileStyle';\n\nimport utils from '../../../utils';\nimport { Item } from '../../items/item';\n\nexport function VideoHolder(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n\n const cssClass = utils.classNames('cms_item video_holder', item.cssClass || item.anchorName || '');\n\n return (\n
\n
\n {subItemsElts}\n
\n
\n );\n}","import { mq } from '../../cssInJs';\n\nexport default{\n\n // video__embed__container : mq({\n // height: ['55vh',null,'88vh']\n // }),\n\n video__embed__video__bg : {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n cursor: 'pointer'\n },\n\n video__embed__video : mq({\n // width: ['220%',null,'auto'],\n // height: 'auto',\n // position:'absolute',\n // top: '50%',\n // left: '50%',\n // transform: 'translate(-50%, -50%)',\n // minHeight: '100%',\n // minWidth: '101%'\n width : '100%'\n }),\n\n // video__embed__text : mq({\n // position:'absolute',\n // color: 'black',\n // fontWeight: 700,\n // fontSize: ['28px',null,'52px'],\n // lineHeight:['30px',null,'55px'],\n // width:'100%',\n // left: '50%',\n // bottom: '10%',\n // textAlign: 'center',\n // transform:'translateX(-50%)',\n // })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport React from 'react';\nimport utils from '../../utils';\nimport * as yt from './iframeApi';\nimport { FaRegPlayCircle } from 'react-icons/fa';\nimport { useStore } from '../../store';\nimport style from './youtubeEmbedPopupV2Style';\n\nexport function YoutubeEmbedPopupV2({ url, title, posterUrl, type }) {\n const { dispatch } = useStore();\n\n const videoId = yt.getYoutubeCode(url);\n const posterImageUrl = utils.site.resourcePath(posterUrl || yt.thumbnailMax(videoId));\n const [popupIndex, setPopupIndex] = React.useState(0);\n\n console.log(\"posterImageUrl\", posterImageUrl);\n\n function openVideo() {\n setPopupIndex(popupIndex + 1);\n dispatch({\n type: 'SET_POPUP', payload: {\n sources: [\n
\n \n
\n //'https://www.youtube.com/watch?v=' + videoId\n ], popupIndex: popupIndex + 1\n }\n });\n }\n\n if (type === 'mp4' || type === 'm4v') {\n return (\n
\n \n \n
\n )\n }\n\n return (\n
\n \n
\n );\n}\n\n// poster=\"/sites/cuisinart/media/kick-start-landing-page/features-conveniencetwoinone.png\"\n// {/* */ }\n// /sites/cuisinart/media/carousel/cut-for-product.webm","import utils from '../../utils';\n\nexport function loadApi(onApiReady) {\n \n console.log(\"12312312312312313\");\n \n if (typeof window !== `undefined` && !window.YT) { // If not, load the script asynchronously\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n\n // onYouTubeIframeAPIReady will load the video after the script is loaded\n window.onYouTubeIframeAPIReady = () => onApiReady(true);\n\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n } else { // If script is already there, load the video directly\n onApiReady(false);\n }\n}\n\n// export function player(playerId, videoId, playerVars = {}, events = {}) {\n// //let player = null;\n// const defaultPlayerVars = {\n// 'autoplay': 1,\n// 'controls': 0,\n// 'loop': 1,\n// 'showinfo': 0,\n// 'rel': 0,\n// 'modestbranding': 1,\n// 'origin': window.location.origin,\n// 'allowfullscreen': true,\n// 'wmode': 'transparent'\n// }\n// const defaultEvents = {\n// 'onStateChange': (e) => { },\n// 'onReady': (e) => { console.log('onReady'); player.mute() },\n// 'onError': (e) => { console.log(e) }\n// }\n\n// const player = new window.YT.Player(playerId, {\n// videoId: videoId,\n// playerVars: Object.assign({}, defaultPlayerVars, playerVars),\n// events: Object.assign({}, defaultEvents, events),\n// });\n// return player;\n// }\n\nexport function thumbnailMax(videoId){\n return `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`\n}\n\n// onPlayerStateChange(event){\n// switch (event.data){\n// case window['YT'].PlayerState.PLAYING:\n// //console.log('Playing');\n// //this.player.mute();\n// break;\n// case window['YT'].PlayerState.PAUSED:\n// //console.log('Pafdsu');\n// break;\n// case window['YT'].PlayerState.ENDED:\n// //console.log('ended ');\n// //this.player.playVideo();\n// this.player.stopVideo();\n// break;\n// }\n// }\n\n// toggleBannerYoutueInCMS(toggleItem:string){ \n// if(toggleItem == 'youtube'){\n// //location.reload();\n// this.toggleBannerOrYoutube = toggleItem;\n// this.player.playVideo();\n// this.init();\n// }\n// else{\n// this.toggleBannerOrYoutube = toggleItem;\n// this.player.stopVideo();\n// }\n// }\n\n\nexport function getYoutubeCode(src) {\n // if (src.indexOf('http') >= 0) {\n // if (src.indexOf('v=') >= 0) {\n // return src.split('v=')[1];\n // }\n // }\n // return src;\n return utils.url.getYoutubeId(src);\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from '../videoHolder/tileStyle';\n\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { YoutubeEmbedPopupV2 } from '../../../components/youtubeEmbedPopupV2/youtubeEmbedPopupV2';\n\nexport function VideoItem(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const youtubeCode = cmsUtils.payload(item, 'YoutubeCode');\n const posterFrameUrl = cmsUtils.payload(item, 'PosterFrameUrl');\n const captionTitleYoutube = cmsUtils.payload(item, 'CaptionTitleYoutube');\n const shortDesc = cmsUtils.payload(item, 'ShortDesc');\n const cssClass = utils.classNames('cms_item', item.cssClass || item.anchorName || '');\n const posterFrameUrlType = (posterFrameUrl && posterFrameUrl !== '') ? (posterFrameUrl.includes('.webm') ? 'webm' : 'mp4') : '';\n\n return (\n
\n
\n \n
\n
\n
\n {captionTitleYoutube}\n
\n
\n
\n
\n
\n
\n );\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Item } from '../../items/item';\nimport utils from '../../../utils';\n\nexport function MultiColumnPanel(props){\n const item = props.item;\n const mobileReverse = cmsUtils.payload(item, 'MobileReverse', 'no');\n //const subItems = item.items || [];\n const subItems = (mobileReverse === \"yes\" && utils.css.screenWidth() <= 550) ? item.items.reverse() || [] : item.items || [];\n const cmsOption = props.cmsOption || {};\n const columnWidths = cmsUtils.payload(item, 'ColumnWidths').split(\",\");\n const mobileColumnWidths = cmsUtils.payload(item, 'MobileColumnWidths').split(\",\");\n const countItem = {countD : 0, countM : 0, col : \"\"};\n\n const bgColor = cmsUtils.payload(item, 'BgColor');\n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\n \n let bgUrl = null;\n if (imageUrl)\n bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\n\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'multiColumnPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || ''); \n\n function setupClass(index){ \n countItem.col = \"\";\n if(columnWidths.length === countItem.countD){\n countItem.countD = 0;\n }\n\n if(mobileColumnWidths.length === countItem.countM){\n countItem.countM = 0;\n }\n \n countItem.col = \"col-sm-\" + columnWidths[countItem.countD] + \" col-\" + mobileColumnWidths[countItem.countM];\n countItem.countD ++;\n countItem.countM ++;\n };\n\n const subItemsElts = subItems.map((subItem, index) => {\n setupClass();\n return
\n \n
\n } \n );\n return (\n
\n
\n
\n {subItemsElts}\n
\n
\n
\n );\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { FaChevronDown } from \"react-icons/fa\";\nimport React, { useLayoutEffect, useRef } from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { useRouter } from '../../../components';\nimport { handleElementLink } from '../../../components';\nimport env from '../../../env';\n\nexport function ExpandableHtml(props) {\n const cmsOption = props.cmsOption || {};\n const [open, setOpen] = React.useState(cmsOption.isCmsEdit);\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const { history } = useRouter();\n //console.log('item', item, cmsOption);\n //console.log(open)\n let content = cmsOption.isCmsEdit? \n cmsUtils.payload(item, 'Content'): \n cmsUtils.payload(item, 'Content').replace(\"__version__\", \" PWA \"+ ver +\"\");\n\n const buttonTitle = cmsUtils.payload(item, 'ButtonTitle');\n\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel exHtml', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n function handleClick(e) { \n \n let target = \"\";\n if(e.target.closest('a')){\n target = e.target.closest('a').getAttribute('target');\n }\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n \n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url)\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n }\n }\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n const buttons = htmlBlock.current.querySelectorAll('.button');\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i])\n }\n\n // const youtubes = htmlBlock.current.querySelectorAll('iframe[src*=\"youtube\"]');\n // console.log(youtubes)\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n\n }, [])\n\n\n const style = {\n icon: {\n marginLeft: '0.5rem',\n width: 'auto !important',\n fontSize: '80%',\n transition: 'all 0.5s'\n },\n iconOpen: {\n transform: 'translateY(-0.1rem) rotate(-180deg)'\n },\n iconClosed: {\n transform: 'translateY(-0.1rem) rotate(0)'\n },\n panelCollapsed: {\n maxHeight: 0,\n transition: 'all 0.6s',\n opacity: 0,\n overflow: 'hidden'\n },\n panelOpen: {\n opacity: 1,\n maxHeight: '2000px',\n transition: 'all 1s'\n }\n }\n\n const toggleExPanel = (e) => {\n e.preventDefault()\n e.stopPropagation()\n setOpen(!open)\n }\n\n\n if (cmsOption.isCmsEdit)\n return (\n
handleClick(e)}>\n
\n {e.preventDefault(); e.stopPropagation();}}>{buttonTitle} \n
To edit the button title, please double click or open item editor
\n
\n \n
\n
\n )\n\n return (\n
handleClick(e)}>\n \n \n
\n
\n )\n}\n\n\nfunction restructureButton(el) {\n if (!el.querySelector('span')) {\n const span = document.createElement('span');\n span.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(span);\n }\n}","import { css } from '@emotion/core'\n//import { mq } from '../../cssInJs'\nexport default{\n exTextItem : css({\n overflow:'hidden',\n maxHeight:'0',\n transition: 'all 0.8s',\n padding: '0px',\n '&.expand' : {\n maxHeight:'100%',\n padding: '1rem 0'\n }\n })\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n//import React from 'react';\nimport cmsUtils from \"../../cms/utils/cmsUtils\";\nimport utils from \"../../utils\";\nimport style from \"./style\";\nimport { Item } from \"../../cms/items/item\";\n\nexport function ExpandablePanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n const bgColor = cmsUtils.payload(item, \"BgColor\");\n const imageUrl = cmsUtils.payload(item, \"ImageUrl\");\n const backgroundTile = cmsUtils.payload(item, \"BackgroundTile\");\n\n let bgUrl = null;\n\n if (imageUrl) {\n bgUrl = utils.site.resourcePath(imageUrl);\n } else if (backgroundTile) {\n bgUrl = utils.site.resourcePath(\n `/dist/transparent-textures/textures/${backgroundTile}`\n );\n }\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"contentPanel\",\n \"expandablePanel\",\n cmsOption.isCmsEdit && \"expandablePanel_item_cms\",\n item.cssClass || item.anchorName || \"\"\n );\n const subItemsElts = subItems.map((subItem, index) => (\n \n ));\n //id={item.anchorName}\n return (\n \n
\n
{subItemsElts}
\n \n );\n}\n","import { css } from '@emotion/core';\nimport { variables, mq } from '../../../cssInJs';\n\nexport default {\n holder: css(mq({\n maxWidth: 1400,\n width: ['100%', null, 'calc(100% - 60px)'],\n margin: 'auto',\n marginTop: [10, null, 10],\n marginBottom: [10, null, 10],\n '.slick-prev, .slick-next': {\n },\n '.slick-prev': {\n left: [10, null, -30]\n },\n '.slick-next': {\n right: [10, null, -30]\n },\n '.slick-prev:before, .slick-next:before': {\n color: variables.fontColor\n }\n }))\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Item } from '../../items/item';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport Slider from \"react-slick\";\nimport './carousel.scss';\nimport style from './style'\n\nexport function Carousel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n\n const slides = subItems.map((subItem, index) =>\n \n );\n\n var settings = {\n dots: true,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n //fade: true,\n autoplay: true,\n slidesToShow: 2,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n // ,{\n // breakpoint: 576,\n // settings: {\n // slidesToShow: 1,\n // slidesToScroll: 1\n // }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n console.log(settings)\n const cssClass = utils.classNames('cms_item', 'carousel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\n\n return (\n
\n
\n \n {slides}\n \n
\n
\n );\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\nimport env from '../../../env';\n\nexport function CarouselItem(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n const cssClass = utils.classNames('cms_item', 'carouselItem');\n\n return (\n
\n {linkUrl ? \n {env.siteName}\n \n : {env.siteName}}\n
\n );\n\n\n}\n","import React from 'react';\nimport env from '../../../env';\nimport utils from '../../../utils';\nimport {\n EmailShareButton,\n FacebookShareButton\n} from \"react-share\";\nimport {\n EmailIcon,\n FacebookIcon\n} from \"react-share\";\nimport { FiPrinter } from 'react-icons/fi';\nimport './printShare.scss';\nimport cmsUtils from '../../utils/cmsUtils';\n\nexport function PrintShare({ item, cmsOption }) {\n const shareUrl = env.baseOrigin + cmsOption.pageData.pageUrl;\n const bannerUrl = getBanner(cmsOption.pageData);\n console.log(cmsOption, shareUrl, bannerUrl)\n return \n
\n \n \n \n \n \n \n \n
\n {bannerUrl &&
\"For
}\n
;\n}\n\nfunction getBanner(pageData) {\n const banner = cmsUtils.findItemByTypeCode(pageData, 'BannerItem')\n //console.log( banner)\n if (banner) {\n return cmsUtils.payload(banner, 'ImageUrl')\n }\n else{\n const singleBanner = cmsUtils.findItemByTypeCode(pageData, 'SingleBanner');\n if(singleBanner){\n return cmsUtils.payload(singleBanner, 'ImageUrl');\n }\n }\n return null;\n}","import { mq } from '../../../cssInJs';\n\nexport default{\n ksjb__page__menu__bar : mq({\n backgroundColor: 'white',\n marginTop: ['1rem',null,'3rem'],\n position:'sticky',\n top: ['44px',null,'56px'],\n zIndex: 999,\n // paddingTop: '0.3rem',\n // paddingBottom: '0.3rem'\n }),\n menu__bar : mq({\n display: 'flex',\n maxWidth: ['360px',null,'1000px'],\n marginLeft: 'auto',\n marginRight: 'auto'\n }),\n bar__item : {\n flex: '1 0 auto',\n textAlign: 'center',\n //backgroundColor: 'red'\n },\n bar__item__title : mq({\n //borderBottom: '3px solid red',\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n display:'inline-block',\n fontSize: ['15px',null,'20px'],\n fontWeight: 600,\n color: 'black',\n cursor: 'pointer',\n position: 'relative'\n\n // '&.selected' : {\n // borderBottom: '3px solid black',\n // }\n }),\n bar__item__line : {\n marginTop:'0px',\n marginBottom: '0px',\n position: 'absolute',\n width: '100%',\n bottom: '0px',\n borderTop: '3px solid black',\n display: 'none',\n '&.selected' : {\n display:'block'\n }\n }\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport utils from '../../../utils';\nimport { useState, useMemo, useEffect } from 'react';\n\nexport function KsjbPageMenuBar(props) {\n\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'ksjb__page__menu__bar', item.cssClass || item.anchorName || '');\n const [curruentPosition, setCurruentPosition] = useState(\"\");\n const curruentPositionMemo = useMemo(() => {\n return curruentPosition;\n }, [curruentPosition]);\n\n useEffect(() => {\n const handleScroll = event => {\n \n const videoPanel = document.getElementById(\"ksjb-page-video\");\n const rectVideoPanel = videoPanel.getBoundingClientRect();\n \n const aboutPanel = document.getElementById(\"about\");\n const rectAboutPanel = aboutPanel.getBoundingClientRect();\n \n const recipesPanel = document.getElementById(\"recipes\");\n const rectRecipesPanel = recipesPanel.getBoundingClientRect();\n\n const quizPanel = document.getElementById(\"quiz-panel\");\n const rectQuizPanel = quizPanel.getBoundingClientRect();\n\n //const retailersPanel = document.getElementById(\"retailers\");\n const retailersPanel = document.getElementById(\"retailers-text\");\n const rectRetailersPanel = retailersPanel.getBoundingClientRect();\n\n if (rectVideoPanel.top <= 200) {\n setCurruentPosition(\"\");\n }\n \n if (rectAboutPanel.top <= 200) {\n setCurruentPosition(\"About Kick Start\");\n }\n \n if (rectRecipesPanel.top <= 200) {\n setCurruentPosition(\"Recipes\");\n }\n \n if (rectQuizPanel.top <= 200) {\n setCurruentPosition(\"Quiz\");\n }\n \n if (rectRetailersPanel.top <= 500) {\n setCurruentPosition(\"Retailers\");\n }\n\n //console.log(\"rectAboutPanel.top\", rectAboutPanel.top);\n //console.log(\"rectAboutPanel.bottom\", rectAboutPanel.bottom);\n // console.log(\"aboutPanelfff\", window.pageYOffset);\n\n // if(rectAboutPanel.top >= 98 && rectAboutPanel.top <= 500){ \n // console.log(\"sdfsfsdfsdfsdf\");\n // setCurruentPosition(\"About Kick Start\");\n // }\n\n\n };\n\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n\n // eslint-disable-next-line\n }, []);\n\n return (\n
\n
\n
\n {\n //setCurruentPosition(\"About Kick Start\");\n utils.ui.scrollTo(\"#about\");\n }}>About Kick Start\n
\n
\n
\n
\n {\n //setCurruentPosition(\"Recipes\");\n utils.ui.scrollTo(\"#recipes\");\n }}>Tips\n
\n
\n
\n
\n {\n //setCurruentPosition(\"Quiz\");\n utils.ui.scrollTo(\"#quiz-panel\");\n }}>Quiz\n
\n
\n
\n
\n {\n //setCurruentPosition(\"Retailers\");\n //utils.ui.scrollTo(\"#retailers\");\n utils.ui.scrollTo(\"#retailers-text\");\n }}>Retailers\n
\n
\n
\n
\n
\n )\n}","//import { mq } from '../../../cssInJs';\n\nimport { mq } from \"../../../cssInJs\";\n\nexport default{\n \n ksjb__page__carousel : {\n position: 'relative',\n '.slick-prev:before, .slick-next:before' : mq({\n fontSize:['41px',null,'50px']\n }),\n '.slick-next, .slick-prev' : mq({\n width: ['41px',null,'48px'],\n height: ['41px',null,'48px']\n }),\n '.slick-next' : mq({\n right: ['27%',null,'20px']\n }),\n '.slick-prev' : mq({\n left : ['27%',null,'20px']\n }),\n '&:after' : mq({\n content: \"''\",\n position:'absolute',\n width : '100%',\n height: '100%',\n top : '0px',\n left: '0px',\n display: ['block',null,'none'],\n //backgroundColor: 'red'\n })\n },\n \n carousel__item : mq({ \n paddingLeft:['0.5rem',null,'1rem'],\n paddingRight: ['0.5rem',null,'1rem'],\n 'img' : {\n width: '100%',\n borderTopLeftRadius: '22px',\n borderTopRightRadius: '22px'\n },\n 'a:hover' : {\n textDecoration: 'none'\n }\n }),\n \n carousel__item__cation : {\n backgroundColor: 'white',\n textAlign: 'left',\n paddingLeft: '1rem',\n paddingTop: '0.8rem',\n paddingBottom: '1rem',\n fontWeight: 700,\n color:'black',\n fontSize: '17px',\n borderBottomLeftRadius: '22px',\n borderBottomRightRadius: '22px'\n },\n carousel__1__item : mq({\n opacity: ['0',null,'1']\n }),\n carousel__2__item : mq({\n display : ['block',null,'none'],\n position : 'absolute',\n //width:'140%',\n width:'210%',\n height : '100%',\n top : '0',\n left:'50%',\n transform: 'translateX(-50%)',\n zIndex: '1'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport Slider from \"react-slick\";\nimport style from './style';\nimport utils from '../../../utils';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport { SiteLink } from '../../../components';\nimport env from '../../../env';\nimport { Fragment } from 'react';\n\n\nexport function KsjbPageCarousel(props) {\n\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const subItems = item.items || [];\n const cssClass = utils.classNames('cms_item', 'ksjb__page__carousel', item.cssClass || item.anchorName || '');\n\n const carouselItems = subItems.map((item, index) => {\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl') || '/';\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle');\n\n return (\n
\n \n {env.siteName}\n
\n {captionTitle}\n
\n
\n
\n )\n });\n\n const settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n //fade: true,\n autoplay: false,\n slidesToShow: 5,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n const settings2 = {\n dots: false,\n //infinite: true,\n infinite: false,\n speed: 1500,\n autoplaySpeed: 3000,\n //fade: true,\n autoplay: false,\n slidesToShow: 2,\n slidesToScroll: 1,\n //afterChange : (current) => console.log(\"ddddd\", current, next),\n //centerMode : true,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1\n }\n }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n return (\n \n
\n
\n \n {carouselItems}\n \n
\n
\n
\n \n
\n {carouselItems}\n
\n
\n
\n
\n\n
\n \"carrot\"\n
\n
\n spinach\n
\n
\n strawberry\n
\n\n
\n
\n )\n}","import { mq } from \"../../../cssInJs\"\n\nexport default {\n ksjb__page__quiz__panel: {\n backgroundColor: '#ABC87A',\n //backgroundColor: 'red',\n position: 'relative'\n },\n quiz__panel__wave: mq({\n width: '100%',\n height: '25px',\n position: 'absolute',\n top: ['-24px', null, '-25px', '-27px'],\n 'svg': {\n width: '100%',\n height: '100%'\n }\n }),\n m_floating_carrot: mq({\n // position: absolute;\n // max-width: 78px;\n // bottom: -38%;\n // left: 72px;\n // z-index: -1;\n // transform: rotateZ(210deg);\n // display: none;\n position: 'absolute',\n maxWidth: '78px',\n left: ' 72px',\n transform: 'rotate(210deg)',\n top: '-26%',\n display: ['block', null, 'none'],\n 'img': {\n width: '100%'\n }\n }),\n floating_spinach_below: mq({\n position: 'absolute',\n maxWidth: '80px',\n left: '1%',\n top: '-30%',\n transform: 'rotate(-60deg)',\n display: ['block', null, 'none'],\n 'img': {\n width: '100%'\n }\n }),\n m_floating_strawberry: mq({\n position: 'absolute',\n maxWidth: '80px',\n left: '65%',\n top: '-12%',\n transform: 'rotate(-36deg)',\n display: ['block', null, 'none'],\n 'img': {\n width: '100%'\n }\n }),\n ksjb__page__quiz__inner__panel: mq({\n textAlign: 'center',\n overflow: 'hidden',\n paddingTop: ['1rem', null, '5rem'],\n paddingBottom: ['1rem', null, '4rem'],\n paddingLeft: ['0.5rem', null, '0.5rem'],\n paddingRight: ['0.5rem', null, '0.5rem']\n }),\n panel__container: {\n //maxWidth: '1600px',\n //margin: 'auto',\n display: 'flex',\n transition: 'all 1s cubic-bezier(0.22, 0.61, 0.36, 1) 0s'\n },\n step__title__container: {\n flex: '0 0 100%',\n //border: '1px solid red'\n },\n row__style: {\n alignItems: 'center',\n alignContent: 'center',\n height: '100%',\n '&.quiz__panel__title__container': {\n //maxWidth: '1600px',\n maxWidth: '1000px',\n margin: 'auto',\n },\n '.col-md-6': {\n //border: '1px solid red'\n }\n },\n quiz__panel__title: {\n color: 'black',\n //border: '1px solid red',\n //maxWidth: '800px',\n //margin: 'auto',\n '.first__text': mq({\n fontSize: ['14px', null, '23px'],\n fontWeight: 700,\n textAlign: 'center',\n letterSpacing: '5px',\n paddingLeft: '5px'\n }),\n '.second__text': mq({\n fontSize: ['26px', null, '44px'],\n fontWeight: 700,\n textAlign: 'center',\n lineHeight: '1.1',\n marginTop: ['1rem', null, '1.5rem']\n }),\n '.third__text': mq({\n fontSize: ['21px', null, '21px'],\n textAlign: 'center',\n marginTop: ['1rem', null, '1.5rme'],\n lineHeight: '1.3',\n '&.desk__top': mq({\n display: ['none', null, 'block']\n }),\n '&.mobile': mq({\n display: ['block', null, 'none'],\n fontSize: '14px',\n maxWidth: '364px',\n marginLeft: 'auto',\n marginRight: 'auto'\n })\n }),\n '.button__text': mq({\n backgroundColor: 'black',\n color: 'white',\n display: ['none', null, 'inline-block'],\n marginTop: ['1rem', null, '1.5rem'],\n fontSize: ['21px', null, '26px'],\n fontWeight: 700,\n marginLeft: 'auto',\n marginRight: 'auto',\n //width: '65%',\n borderRadius: '10px',\n paddingTop: ['6.5px', null, '6.5px'],\n paddingBottom: ['6.5px', null, '6.5px'],\n paddingLeft: '60px',\n paddingRight: '60px',\n cursor: 'pointer',\n letterSpacing: 0,\n '&:hover': {\n backgroundColor: '#4d4d4d'\n },\n '&.mobile': {\n display: ['inline-block', null, 'none'],\n marginBottom: '1rem'\n }\n })\n },\n\n quiz__panel__img: {\n //border: '1px solid red',\n maxWidth: '530px',\n margin: 'auto',\n 'img': {\n width: '100%'\n }\n },\n\n quiz__detail__text1: mq({\n fontSize: ['21px', null, '23px'],\n fontWeight: 700,\n textAlign: 'center',\n color: 'black'\n }),\n\n quiz__detail__text2: mq({\n fontSize: ['26px', null, '48px'],\n fontWeight: 700,\n textAlign: 'center',\n lineHeight: '1.1',\n marginTop: ['0.8rem', null, '1.5rem'],\n marginBottom: ['0.8rem', null, '1.5rem'],\n color: 'black',\n }),\n quiz__detail__answers: {\n display: 'flex',\n flexWrap: 'wrap',\n maxWidth: '970px',\n margin: 'auto'\n },\n quiz__detail__answer: mq({\n flex: ['1 0 50%', null, '1 0 33.3%'],\n maxWidth: ['50%', null, '33.3%'],\n padding: ['0.3rem', null, '1rem']\n }),\n quiz__detail__answer__des: mq({\n padding: ['0.5rem', null, '1rem'],\n border: '2px solid white',\n color: 'black',\n fontWeight: '500',\n borderRadius: '20px',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n minHeight: ['110px', null, '144px'],\n cursor: 'pointer',\n '&.selected': {\n backgroundColor: 'white'\n }\n }),\n quiz__detail__arrow: {\n 'img': mq({\n width: ['40px', null, '60px'],\n marginLeft: '2rem',\n marginRight: '2rem',\n cursor: 'pointer',\n '&.none': {\n pointerEvents: 'none'\n }\n }),\n },\n submit__button: mq({\n backgroundColor: 'black',\n color: 'white',\n display: 'inline-block',\n marginTop: '1.5rem',\n fontSize: ['21px', null, '21px'],\n fontWeight: 700,\n marginLeft: 'auto',\n marginRight: 'auto',\n borderRadius: '10px',\n paddingTop: ['0.5rem', null, '1rem'],\n paddingBottom: ['0.5rem', null, '1rem'],\n paddingLeft: '5rem',\n paddingRight: '5rem',\n cursor: 'pointer',\n '&.none': {\n pointerEvents: 'none'\n }\n }),\n result__step: {\n flex: '0 0 100%'\n },\n result__step__detail: mq({\n backgroundColor: '#FFFBE3',\n maxWidth: '1056px',\n margin: 'auto',\n marginTop: ['3rem', null, '3rem'],\n display: 'flex',\n borderRadius: '30px',\n padding: '1rem',\n flexWrap: 'wrap',\n '.result__step__detail__p': mq({\n flex: ['1 0 100%', null, '1 0 50%'],\n maxWidth: ['100%', null, '50%'],\n padding: '1rem'\n }),\n '.result__step__detail__title': mq({\n textAlign: 'left',\n fontWeight: '700',\n color: 'black',\n fontSize: ['21px', null, '26px']\n\n }),\n '.result__step__detail__title2': {\n fontSize: '36px',\n textAlign: 'left',\n lineHeight: '1.3',\n marginTop: '0.5rem',\n fontWeight: 700,\n '&.a': {\n color: '#FF8181'\n },\n '&.b': {\n color: '#FF8181'\n },\n '&.c': {\n color: '#931C4F'\n },\n '&.d': {\n color: '#DD1034'\n },\n '&.e': {\n color: '#679914'\n },\n '&.f': {\n color: '#F8B301'\n }\n },\n '.result__step__detail__img__text': {\n marginTop: '1rem',\n 'img': {\n width: '100%'\n }\n },\n '.result__step__detail__img': {\n margin: 'auto',\n 'img': {\n width: '100%'\n }\n },\n '.result__step__detail__des': {\n textAlign: 'left',\n marginTop: '2rem',\n fontWeight: '500',\n color: 'black'\n }\n }),\n\n result__step__social__v2: {\n display: 'flex',\n justifyContent : 'center',\n alignItems : 'center'\n },\n\n result__step__social: mq({\n paddingLeft : ['4px',null,'8px'],\n paddingRight : ['4px',null,'8px'],\n '.result__step__social__container': mq({\n display: 'inline-block',\n maxWidth: ['45px', null, '60px'],\n 'img': {\n width: '100%'\n },\n }),\n 'button.react-share__ShareButton:focus': {\n outline: 'none !important'\n }\n }),\n\n result__step__bottom__text__v2: mq({\n paddingLeft : ['4px',null,'8px'],\n paddingRight : ['4px',null,'8px'],\n '.result__step__bottom__text__1, .result__step__bottom__text__2' : {\n fontWeight:700\n },\n }),\n\n result__step__bottom__text: mq({\n color: 'black',\n marginTop: '2rem',\n marginBottom: ['3rem', null, '0'],\n '.result__step__bottom__text__3': mq({\n marginTop : ['0.4rem',null,'0.8rem'],\n }),\n '.result__step__quiz__btn': {\n cursor: 'pointer',\n textDecoration: 'underline'\n }\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { useState, useMemo } from 'react';\nimport style from './style';\nimport utils from '../../../utils';\nimport { FacebookShareButton } from \"react-share\";\nimport env from '../../../env';\n//import { useRouter } from 'components';\n\nexport function QuizPanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'ksjb__page__quiz__panel', item.cssClass || item.anchorName || '');\n //const { query } = useRouter();\n const [curruentStep, setCurruentStep] = useState(0);\n const [answerResult, setAnswerResult] = useState({ step1: '', step2: '', step3: '', step4: '', step5: '', step6: '' });\n const baseShareUrl = env.baseOrigin + cmsOption.pageData.pageUrl;\n\n const curruentStepMemo = useMemo(() => {\n return curruentStep;\n }, [curruentStep]);\n\n const answerResultMemo = useMemo(() => {\n return answerResult;\n }, [answerResult]);\n\n const resetQuiz = (() => {\n setAnswerResult({ step1: '', step2: '', step3: '', step4: '', step5: '', step6: '' });\n setCurruentStep(1);\n });\n\n //id={item.anchorName}\n return (\n
\n\n
\n \n \n \n \n \n
\n\n
\n \"carrot\"\n
\n\n
\n spinach\n
\n\n
\n strawberry\n
\n\n
\n
\n \n \n \n \n \n \n \n\n {\n answerResult.step1 !== '' && answerResult.step2 !== '' && answerResult.step3 !== '' &&\n answerResult.step4 !== '' && answerResult.step5 !== '' && answerResult.step6 !== '' &&\n \n }\n\n
\n
\n
\n\n )\n}\n\nfunction StepTitle({ setCurruentStep }) {\n return (\n
\n
\n
\n
\n
QUIZ
\n
WHAT SIGNATURE
DRINK ARE YOU?
\n\n
\n Find out what drink best represents you.
\n Just answer a few fun questions!\n
\n\n
\n You may know what juice or smoothie you enjoy…\n but do you know what kind of a drink best embodies you?\n Answer the following quiz questions to peel away the layers and get to the very core of who you might be! Pardon the puns.\n Let's begin.\n
\n\n
{\n setCurruentStep(1);\n }}>\n TAKE THE QUIZ\n
\n
\n
\n
\n
\n drink__change\n {/* */}\n
\n
\n
{\n setCurruentStep(1);\n }}>\n TAKE THE QUIZ\n
\n
\n\n
\n
\n
\n )\n}\n\nfunction Step1({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step1_a', answerIndex: 0, quizDes: \"A dwarf bunny that's just surrendered to the shelter.\" },\n { answerId: 'step1_b', answerIndex: 1, quizDes: \"A lioness (yup, not even a lion).\" },\n { answerId: 'step1_c', answerIndex: 2, quizDes: \"A platypus with an identity crisis.\" },\n { answerId: 'step1_d', answerIndex: 3, quizDes: \"The endangered bumblebee.\" },\n { answerId: 'step1_e', answerIndex: 4, quizDes: \"A lynx dressed in haute couture.\" },\n { answerId: 'step1_f', answerIndex: 5, quizDes: \"A schnauzer that knows all the tricks.\" },\n ];\n\n const text1 = \"QUESTION 1\";\n const text2 = \"What is your spirit animal?\";\n const stepId = \"step1\";\n\n return (\n \n )\n}\n\nfunction Step2({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step2_a', answerIndex: 0, quizDes: \"I don't dance. I generally hide in the corner.\" },\n { answerId: 'step2_b', answerIndex: 1, quizDes: \"It's my own dance routine. You don't know it.\" },\n { answerId: 'step2_c', answerIndex: 2, quizDes: \"It's twerking mixed with a bit of ballet.\" },\n { answerId: 'step2_d', answerIndex: 3, quizDes: \"An interpretive dance that speaks of what society has become.\" },\n { answerId: 'step2_e', answerIndex: 4, quizDes: \"Go away. I'm not breaking a sweat in my designer threads.\" },\n { answerId: 'step2_f', answerIndex: 5, quizDes: \"Anything that's super on trend right now on TikTok!\" },\n ];\n\n const text1 = \"QUESTION 2\";\n const text2 = \"What is your go-to dance move at a party?\";\n const stepId = \"step2\";\n\n return (\n \n )\n}\n\nfunction Step3({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step3_a', answerIndex: 0, quizDes: \"A supercar with tinted windows.\" },\n { answerId: 'step3_b', answerIndex: 1, quizDes: \"A convertible with the top down. Always.\" },\n { answerId: 'step3_c', answerIndex: 2, quizDes: \"Must it be a car? I'd like a motorbike instead.\" },\n { answerId: 'step3_d', answerIndex: 3, quizDes: \"Anything that runs on renewable energy.\" },\n { answerId: 'step3_e', answerIndex: 4, quizDes: \"A top-of-the-line model of any expensive Italian car brand.\" },\n { answerId: 'step3_f', answerIndex: 5, quizDes: \"Anything is fine. The focus is always on me anyway.\" },\n ];\n\n const text1 = \"QUESTION 3\";\n const text2 = \"Describe your dream car.\";\n const stepId = \"step3\";\n\n return (\n \n )\n}\n\nfunction Step4({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step4_a', answerIndex: 0, quizDes: \"Joan of Arc, because of the sacrifices she made.\" },\n { answerId: 'step4_b', answerIndex: 1, quizDes: \"Coco Chanel, for always setting trends.\" },\n { answerId: 'step4_c', answerIndex: 2, quizDes: \"Charlie Chaplin. Or maybe Björk. Or RuPaul.\" },\n { answerId: 'step4_d', answerIndex: 3, quizDes: \"Greta Thunberg, for raising awareness about global warming.\" },\n { answerId: 'step4_e', answerIndex: 4, quizDes: \"Elon Musk, for making all that cash.\" },\n { answerId: 'step4_f', answerIndex: 5, quizDes: \"Lady Gaga, just because.\" },\n ];\n\n const text1 = \"QUESTION 4\";\n const text2 = \"Name an iconic figure you admire\";\n const stepId = \"step4\";\n\n return (\n \n )\n}\n\nfunction Step5({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step5_a', answerIndex: 0, quizDes: \"Pink, because it's delicate.\" },\n { answerId: 'step5_b', answerIndex: 1, quizDes: \"Orange, because it reminds me of a bright sun.\" },\n { answerId: 'step5_c', answerIndex: 2, quizDes: \"Blue. Because it's almost a blanket term for the colours mistaken as indigo, turquoise and more.\" },\n { answerId: 'step5_d', answerIndex: 3, quizDes: \"Red, because it's the colour of the blood that runs through our veins.\" },\n { answerId: 'step5_e', answerIndex: 4, quizDes: \"Green, because I'm always envious of what others have that I don't!\" },\n { answerId: 'step5_f', answerIndex: 5, quizDes: \"Yellow, because it's bright!\" },\n ];\n\n const text1 = \"QUESTION 5\";\n const text2 = \"What's your favourite colour?\";\n const stepId = \"step5\";\n\n return (\n \n )\n}\n\nfunction Step6({ setCurruentStep, setAnswerResult, stepAnswer }) {\n\n const answers = [\n { answerId: 'step6_a', answerIndex: 0, quizDes: \"Up in the mountains where I can reflect on life.\" },\n { answerId: 'step6_b', answerIndex: 1, quizDes: \"Paris, because it's the place to be inspiring and inspired.\" },\n { answerId: 'step6_c', answerIndex: 2, quizDes: \"Ecuador, because it's super exotic.\" },\n { answerId: 'step6_d', answerIndex: 3, quizDes: \"Antarctica, because I want to experience icy wonders.\" },\n { answerId: 'step6_e', answerIndex: 4, quizDes: \"Anywhere I get treated like royalty.\" },\n { answerId: 'step6_f', answerIndex: 5, quizDes: \"Rio de Janeiro! For all the non-stop Carnival parties.\" },\n ];\n\n const text1 = \"QUESTION 6\";\n const text2 = \"What's your dream holiday destination?\";\n const stepId = \"step6\";\n\n return (\n \n )\n}\n\nfunction QuizDetails({ answers, setCurruentStep, text1, text2, stepId, setAnswerResult, stepAnswer }) {\n\n return (\n
\n
\n
\n\n
{text1}
\n
{text2}
\n\n
\n {\n answers.map((item, index) =>\n
{\n setAnswerResult((c) => { return { ...c, [stepId]: item.answerId } });\n }}>\n
\n
\n {item.quizDes}\n
\n
\n
\n )\n }\n
\n\n
\n\n {\n stepId !== 'step1' &&\n arrow {\n setCurruentStep((c) => c - 1);\n }} />\n }\n\n {\n stepId !== 'step6' &&\n arrow {\n setCurruentStep((c) => c + 1);\n }} />\n }\n
\n {\n stepId === 'step6' &&\n
{\n if (window.innerWidth <= 576) {\n utils.ui.scrollTo(\"#result__step__detail__item\");\n setTimeout(() => {\n //utils.ui.scrollTo(\"#result__step__detail__item\");\n setCurruentStep((c) => c + 1);\n }, 500);\n }\n else {\n setCurruentStep((c) => c + 1);\n }\n }}>\n SUBMIT\n
\n }\n\n
\n
\n
\n )\n}\n\nfunction ResultStep({ answerResult, resetQuiz, baseShareUrl }) {\n const resultMemo = useMemo(() => {\n let mArray = [\n { resultId: 'a', point: 0 },\n { resultId: 'b', point: 0 },\n { resultId: 'c', point: 0 },\n { resultId: 'd', point: 0 },\n { resultId: 'e', point: 0 },\n { resultId: 'f', point: 0 }\n ];\n\n for (let i = 1; i <= 6; i++) {\n if (answerResult[\"step\" + i].includes(\"_a\")) {\n mArray[0].point = mArray[0].point + 1;\n }\n else if (answerResult[\"step\" + i].includes(\"_b\")) {\n mArray[1].point = mArray[1].point + 1;\n }\n else if (answerResult[\"step\" + i].includes(\"_c\")) {\n mArray[2].point = mArray[2].point + 1;\n }\n else if (answerResult[\"step\" + i].includes(\"_d\")) {\n mArray[3].point = mArray[3].point + 1;\n }\n else if (answerResult[\"step\" + i].includes(\"_e\")) {\n mArray[4].point = mArray[4].point + 1;\n }\n else if (answerResult[\"step\" + i].includes(\"_f\")) {\n mArray[5].point = mArray[5].point + 1;\n }\n }\n\n mArray.sort((a, b) => a.point - b.point).reverse();\n\n let _result = { id: '', title: '', title2: '', img: '', imgText: '', des: '', shareUrl: '' };\n switch (mArray[0].resultId) {\n case 'a':\n _result.id = 'a';\n _result.title = 'You are an';\n _result.title2 = 'Easily Bruised Strawberry Smoothie';\n _result.img = 'sb.png';\n _result.imgText = 'quiz-results-01-strawberry-smoothie.png';\n _result.des = \"Don't let the world get to you. There are so many amazing things out there to enjoy! Take everything with a pinch of salt (figuratively) and embrace the goodness of everyone and everything around you. Have fun!\";\n _result.shareUrl = baseShareUrl + '?quizid=a';\n break;\n case 'b':\n _result.id = 'b';\n _result.title = 'You are the';\n _result.title2 = 'OG OJ';\n _result.img = 'oj.png';\n _result.imgText = 'quiz-results-02-avocado-smoothie.png';\n _result.des = \"You are a super confident individual who believes in being the ultra trendsetter. You say no to imitations and will not stand for being a copycat. People around look to you for fashion inspiration, design trends, and even what juices and smoothies to make!\";\n _result.shareUrl = baseShareUrl + '?quizid=b';\n break;\n case 'c':\n _result.id = 'c';\n _result.title = 'You are a';\n _result.title2 = 'Quirky Blueberry And Blackcurrant Smoothie';\n _result.img = 'berry.png';\n _result.imgText = 'quiz-results-03-blueberry-blackcurrant-smoothie.png';\n _result.des = \"A superfruit combo? That's you. You are equal parts unique and unpredictable. And that thoroughly fascinates people around you. You are different. Not just because it's awesome to be, but because that's just who you are.\";\n _result.shareUrl = baseShareUrl + '?quizid=c';\n break;\n case 'd':\n _result.id = 'd';\n _result.title = 'You are a';\n _result.title2 = 'Woke Watermelon Juice';\n _result.img = 'wm.png';\n _result.imgText = 'quiz-results-04-watermelon-juice.png';\n _result.des = \"You're totes everyone's cup of tea. Or rather, juice. Always making sure people around are well taken care of, you are always on the lookout for friends who can do with a bit of help. Like, OMG, your loving spirit is what attracts people to you.\";\n _result.shareUrl = baseShareUrl + '?quizid=d';\n break;\n case 'e':\n _result.id = 'e';\n _result.title = 'You are an';\n _result.title2 = 'Expensive Avocado Smoothie';\n _result.img = 'avo.png';\n _result.imgText = 'quiz-results-05-avocado-smoothie.png';\n _result.des = \"You have a rich taste. You seek the finer things in life and will never settle for second best. Everything about you is simply divine and immaculate because… why not? It don't mean a thing if it ain't got that bling.\";\n _result.shareUrl = baseShareUrl + '?quizid=e';\n break;\n case 'f':\n _result.id = 'f';\n _result.title = 'You are a';\n _result.title2 = 'Life-Of-The-Party Lime-Lemonade';\n _result.img = 'lemon.png';\n _result.imgText = 'quiz-results-06-lime-lemonade.png';\n _result.des = \"Oh wow. When you enter the room, everyone turns to look at you. Why? You're super zesty, fun, and energetic. Your energy is dynamic and everyone is drawn to you. No one's as cool and popular as you.\";\n _result.shareUrl = baseShareUrl + '?quizid=f';\n break;\n default:\n break;\n }\n\n return _result;\n\n // eslint-disable-next-line\n }, [answerResult]);\n\n console.log(\"resultMemo\", resultMemo);\n\n return (\n
\n
\n
\n\n
\n\n
\n
{resultMemo.title}
\n {/*
\n {resultMemo.title2}\n
*/}\n
\n \"img_text\"\n
\n
\n {resultMemo.des}\n
\n
\n
\n
\n \"step_img\"\n
\n
\n
\n\n {/*
\n \n
\"fb\"
\n
\n
*/}\n\n
\n\n
\n
\n \n
\"fb\"
\n
\n
\n
\n
Describes you to a T?
\n
Share it on Facebook!
\n
\n
\n\n {/*
Describes you to a T?
\n
Share it on Facebook!
*/}\n\n\n
\n Doesn't sound like you? Take the {\n resetQuiz();\n if (window.innerWidth <= 576) {\n utils.ui.scrollTo(\"#step__title__container__step1\");\n }\n }}>quiz again!\n
\n
\n\n
\n
\n\n
\n )\n}","import { mq } from '../../cssInJs';\n\nexport default {\n\n video__embed__container: mq({\n //height: ['55vh',null,'88vh']\n //height: ['55vh',null,'70vh']\n height: ['480px', '600px', '630px', null, '720px', '914px']\n }),\n\n video__embed__video__bg: {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n },\n\n video__embed__video: mq({\n width: ['220%','265%','auto',null,null,'auto'],\n height: 'auto',\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n minHeight: '100%',\n //minWidth: '101%'\n minWidth: '100%'\n }),\n video__embed__text: mq({\n position: 'absolute',\n color: 'black',\n fontWeight: 700,\n\n // fontSize: ['28px', 'calc(16px + (32 - 16)*(100vw - 400px)/(800 - 400))','calc(16px + (30.3 - 16)*(100vh - 400px)/(800 - 400))', '33px', null, '36px', '48px'],\n // lineHeight: ['30px', '1.06', '35px', null, '38px', '51px'],\n \n fontSize: ['28px', 'calc(20px + (35 - 20)*(100vw - 400px)/(800 - 400))', '33px', null, '36px', '48px'],\n lineHeight: ['30px', '1.06', '35px', null, '38px', '51px'],\n\n width: '100%',\n left: '50%',\n bottom: '10%',\n textAlign: 'center',\n transform: 'translateX(-50%)',\n\n // '@media (min-width : 2560px) and (min-height : 1307px)': {\n // fontSize: '48px',\n // lineHeight: '51px'\n // }\n\n })\n\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport utils from '../../utils';\n\nexport function VideoEmbed(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'video__embed', item.cssClass || item.anchorName || '');\n\n // id={item.anchorName}\n\n return (\n
\n
\n \n
\n Kick Start Personal
Juicer & Blender\n
\n
\n
\n )\n}","import React from 'react';\nimport utils from '../../utils';\nimport { SiteLink } from '../../components';\n\nexport function Tile({ product }) {\n const imageUrl = product.productThumbnail ? utils.site.resourcePath(product.productThumbnail) : '/assets/product-empty.png';\n const productUrl = product.productUrl ? product.productUrl : `/product/${product.productCode}`;\n\n return (\n
\n \n
\n
\n {product.productName}\n
\n
\n
\n
\n\n
\n {product.priceText ? product.priceText : ''}\n
\n
\n
\n )\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport cmsUtils from \"../../cms/utils/cmsUtils\";\nimport utils from \"../../utils\";\nimport { useEffect } from \"react\";\nimport { usePost, Loading, ErrorMessage } from \"../../components\";\nimport { Tile } from \"../../site/product/productTileV2\";\nimport env from \"../../env\";\nimport { useBV } from '../../site/bazzarVoice/useBV';\n\nexport function RecipeRelProducts(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames(\n \"cms_item\",\n \"recipe__rel__products\",\n item.cssClass || item.anchorName || \"\"\n );\n\n const recipeRelatedProducts =\n cmsUtils.payload(item, \"RecipeRelatedProducts\") || \"\";\n //const recipeRelatedProducts = \"\";\n\n console.log(\"recipeRelatedProducts\", recipeRelatedProducts);\n const post = usePost();\n useBV(null, { showReview: null });\n\n useEffect(() => {\n if (!recipeRelatedProducts || recipeRelatedProducts === \"\") {\n return;\n }\n\n post.send(env.apiBase + \"/api/product/getrelproductsforrecipe\", {\n relProductsForRecipe: recipeRelatedProducts,\n });\n\n // eslint-disable-next-line\n }, []);\n\n if (!recipeRelatedProducts || recipeRelatedProducts === \"\") {\n return
No product
;\n } else if (post.loading()) {\n return ;\n } else if (post.hasErrors()) {\n return ;\n }\n\n //const data = post.response;\n const products = post.response;\n\n if (products.length === 0){\n return (\n
\n No result found.\n
\n );\n }\n \n return (\n \n
\n
\n {products.map((product, index) => (\n \n ))}\n
\n
\n \n );\n}\n","import React from \"react\";\nimport { BannerPanel } from \"./bannerPanel/view\";\nimport { BannerItem } from \"./bannerItem/view\";\nimport { Panel } from \"./panel/view\";\nimport { Html } from \"./html/view\";\nimport { TestimonialPanel } from \"./testimonialPanel/view\";\nimport { TestimonialItem } from \"./testimonialItem/view\";\nimport { ImagePanel } from \"./imagePanel/view\";\nimport { PageTiles } from \"./pageTiles/view\";\nimport { SingleBanner } from \"./singleBanner/view\";\nimport { ContactForm } from \"./contactForm/view\";\nimport { YoutubeBannerPanel } from \"./youtubeBannerPanel/view\";\nimport { Code } from \"./code/view\";\nimport { BlogPosts } from \"./blogPosts/view\";\nimport { BlogPostTitle } from \"./blogPostTitle/view\";\nimport { VideoHolder } from \"./videoHolder/view\";\nimport { VideoItem } from \"./videoItem/view\";\nimport { MultiColumnPanel } from \"./multiColumnPanel/view\";\nimport { ExpandableHtml } from \"./expandableHtml/view\";\nimport { ExpandablePanel } from \"../../components/expandablePanel/view\";\n\nimport { Carousel } from \"./carousel/view\";\nimport { CarouselItem } from \"./carouselItem/view\";\nimport { PrintShare } from \"./printShare/view\";\n\nimport { KsjbPageMenuBar } from \"../../site/ksjbPage/ksjbPageMenuBar/view\";\nimport { KsjbPageCarousel } from \"../../site/ksjbPage/KsjbPageCarousel/view\";\nimport { QuizPanel } from \"../../site/ksjbPage/QuizPanel/view\";\n\nimport { VideoEmbed } from \"../../components/videoEmbed/view\";\nimport { CookingCompanion } from \"../../site/gourmetPro/sections/cookingCompanion\";\nimport { InfoPanel2 } from \"../../site/gourmetPro/sections/infoPanel2\";\nimport { SlidingRecipeTiles } from \"../../site/gourmetPro/sections/slidingRecipeTiles\";\nimport { DifferenceInfoPanel } from \"../../site/gourmetPro/sections/differenceInfoPanel\";\nimport { RecipeRelProducts } from \"../../components/recipeRelProducts/view\";\n\nexport function Item(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n //console.log('item', item, subItems, cmsOption);\n let itemElt = <>;\n if (item.itemTypeCode === \"Panel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Html\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"BannerPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"BannerItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"TestimonialPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"TestimonialItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ImagePanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PageTiles\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"SingleBanner\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ContactForm\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"YoutubeBannerPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Code\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Blog-Posts\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Blog-PostTitle\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"MultiColumnPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ExpandableHtml\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"VideoHolder\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"VideoItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Carousel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"CarouselItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PrintShare\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"KsjbPageMenuBar\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"KsjbPageCarousel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"QuizPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"VideoEmbed\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"GourmetProCookiCom\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"GourmetProInfoPanel2\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"GourmetProRecipe\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"DifferenceInfoPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"RecipeRelProducts\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ExpandablePanel\") {\n itemElt = ;\n } else {\n itemElt =
{item.itemTypeCode}
;\n }\n\n // const subItemsElts = subItems.map((subItem, index) =>\n // \n // );\n return (\n <>\n {itemElt}\n {/* {subItemsElts} */}\n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useRouter } from '../../../components';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport { NotFound } from '../../../components';\nimport env from '../../../env';\nimport { useStore } from '../../../store';\nimport { ErrorPopup, Loading } from '../../../components';\nimport { useInstagram } from '../../../components';\nimport { MetaTag } from '../../../components';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { gtm } from '../../../lib/tracking';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPage() {\n const { dispatch } = useStore();\n const [pageLoaded, setPageLoaded] = useState(false);\n const [data, setData] = useState(null);\n //const path = usePath();\n //log('view page', path);\n const { pathname, Redirect } = useRouter();\n useInstagram();\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n useEffect(() => {\n if (data) {\n dispatch({ type: 'SET_PAGE', payload: data.data })\n dispatch({ type: 'SET_MENU', payload: data.menu })\n }\n // eslint-disable-next-line\n }, [data]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\n //const menuData = get.response.menu;\n const redirectTo = get.response.redirectTo;\n\n const cmsOption = {};\n\n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n setData(get.response);\n document.title = pageData.pageTitle;\n gtm.pageView(pathname, pageData.pageTitle);\n return null;\n } else if (redirectTo) {\n if (redirectTo.indexOf('http') >= 0 && typeof window !== `undefined`) {\n return window.location.href = redirectTo;\n } else {\n return \n }\n } else if (!pageLoaded && !pageData) {\n setPageLoaded(true);\n setData(get.response);\n return ()\n }\n\n log('3. call rendering memo')\n if (pageData) {\n \n return ;\n }\n else\n return \n}\n\n// change page structure on the fly\nfunction alterPageData(pageData) {\n if (!pageData || !pageData.pageUrl) return;\n if (pageData.pageUrl.indexOf('/recipe-') === 0) {\n try {\n const inx = utils.array.findIndex(pageData.sections[0].items, x => x.itemTypeCode === 'Panel')\n if (inx >= 0) {\n const newItem = { \"itemTypeCode\": \"PrintShare\", \"cssClass\": null, \"anchorName\": null, \"itemId\": null, \"payloads\": [], \"items\": [] }\n utils.array.insertItem(pageData.sections[0].items[inx].items, 0, newItem)\n }\n } catch (e) { }\n }\n else if (pageData.pageUrl.indexOf('/recipe/') === 0) {\n try {\n const inx = utils.array.findIndex(pageData.sections[0].items, x => x.itemTypeCode === 'Panel')\n if (inx >= 0) {\n const newItem = { \"itemTypeCode\": \"PrintShare\", \"cssClass\": \"blog__type\", \"anchorName\": null, \"itemId\": null, \"payloads\": [], \"items\": [] }\n utils.array.insertItem(pageData.sections[0].items[inx].items, 0, newItem)\n }\n } catch (e) { }\n }\n //console.log(pageData)\n}\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n\n alterPageData(pageData);\n\n cmsOption.pageData = pageData;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
\n )\n }\n );\n return (\n <>\n \n
\n {sectionItems}\n
\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\nfunction getMetaTag(pageData) {\n const country = utils.site.isNZ ? 'New Zealand' : 'Australia'\n const siteName = env.siteName + ' ' + country;\n\n return {\n title: pageData.pageTitle + ' | ' + siteName,\n description: cmsUtils.payload(pageData, 'Description'),\n keywords: cmsUtils.payload(pageData, 'Keyword'),\n heroImageUrl: utils.site.fullUrl(cmsUtils.payload(pageData, 'ImageUrl')),\n language: 'English',\n country: country,\n siteName: siteName,\n url: utils.site.fullUrl(pageData.pageUrl),\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n }\n}","//import { CmsPageController } from './cms-page-controller'\n\nexport class CmsRadioSender {\n controller;//: CmsPageController;\n constructor(controller) {\n this.controller = controller;\n }\n\n sendMessageToParent(action: string, data: any) {\n var cloned = JSON.parse(JSON.stringify(data));\n if (typeof window !== `undefined`) {\n window.parent.postMessage({\n action: action,\n data: cloned\n }, \"*\");\n }\n }\n\n saveAllDirtyHtml(htmlChanges) {\n // skip another unneccesary round trip\n this.sendMessageToParent('return-all-dirty-html', {\n returnTo: '_saveAllDirtyHtml',\n htmlChanges: htmlChanges\n });\n }\n\n selectControllerItem(data) {\n this.sendMessageToParent(\"select-controller-item\", data);\n }\n\n returnAllDirtyHtml(returnTo, htmlChanges) {\n this.sendMessageToParent('return-all-dirty-html', {\n returnTo: returnTo,\n htmlChanges: htmlChanges\n });\n }\n\n returnHtml(id, html) {\n this.sendMessageToParent('return-html', {\n id: id,\n html: html\n });\n }\n\n markDirtyHtml(id) {\n this.sendMessageToParent(\"mark-dirty-html-item\", { id: id });\n }\n}\n","//declare var CKEDITOR: any;\n//import { CmsPageController } from './cms-page-controller'\n\nexport class CmsRadioReceiver {\n controller;//: CmsPageController;\n constructor(controller) {\n this.controller = controller;\n this.init();\n }\n\n init() {\n if (typeof window !== `undefined`) {\n var self = this;\n window.addEventListener(\"message\", function (e) {\n\n var action = e.data.action;\n var data = e.data.data;\n\n // console.log(e, \"cms-action-received: \" + action, data);\n\n if (action === 'select-item') {\n self.selectItem(data.itemId)\n } else if (action === 'media-selected-ckeditor') {\n self.mediaSelectedCKEditor(data)\n } else if (action === 'get-all-dirty-html') {\n var htmlChanges = self.controller.getAllDirtyHtml();\n self.controller.sender.returnAllDirtyHtml(data.returnTo, htmlChanges);\n } else if (action === 'get-html') {\n var html = self.controller.getHtml(data.id);\n self.controller.sender.returnHtml(data.id, html);\n } else if (action === 'page-reload') {\n window.location.reload();\n }\n }, false);\n }\n }\n\n mediaSelectedCKEditor(data) {\n const CKEDITOR = window['CKEDITOR'] || {};\n CKEDITOR.tools.callFunction(data.funcNum, data.selectedPath);\n }\n\n selectItem(itemId) {\n this.controller.selectItemFromController(itemId);\n }\n}\n","import { CmsRadioSender } from './cms-radio-sender'\n// //import * as $ from 'jquery';\n// declare var CKEDITOR: any;\n// import * as $ from 'jquery';\n\nexport class CmsHtmlEditor {\n ckeditorConfig;\n ckeditorStylesSet;\n sender;\n constructor(cmsEndpoint: string, sender: CmsRadioSender) {\n this.ckeditorConfig = {\n startupFocus: true,\n filebrowserBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectpageormedia', //'/cms/browse',//'/cms/resource/selectfileckeditor',\n filebrowserImageBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectmedia', //'/cms/browse?type=rc',//'/cms/resource/selectfileckeditor?type=Images',\n extraPlugins: 'sourcedialog,youtubejaba,lineutils,widget,embedjaba,image2',\n toolbar: [{\n name: 'basicstyles',\n groups: ['basicstyles', 'cleanup'],\n items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']\n },\n {\n name: 'paragraph',\n groups: ['list', 'align'],\n items: ['NumberedList', 'BulletedList', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight',\n 'JustifyBlock'\n ]\n },\n {\n name: 'links',\n items: ['Link', 'Unlink', 'Anchor']\n },\n {\n name: 'insert',\n items: ['Image', 'Table', 'HorizontalRule', 'PageBreak', 'Iframe', 'Youtube', 'EmbedJaba']\n },\n '/',\n {\n name: 'document',\n groups: ['mode'],\n items: ['Sourcedialog']\n },\n {\n name: 'clipboard',\n groups: ['clipboard', 'undo'],\n items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']\n },\n {\n name: 'styles',\n items: ['Styles', 'Format']\n },\n {\n name: 'colors',\n items: ['TextColor', 'BGColor']\n },\n {\n name: 'tools',\n items: ['Maximize', 'ShowBlocks']\n }\n ],\n extraAllowedContent: 'style;span;*[id,rel,data-*](*){*}'\n }\n\n this.ckeditorStylesSet = [\n /* Block Styles */\n\n // These styles are already available in the \"Format\" combo (\"format\" plugin),\n // so they are not needed here by default. You may enable them to avoid\n // placing the \"Format\" combo in the toolbar, maintaining the same features.\n /*\n { name: 'Paragraph',\t\telement: 'p' },\n { name: 'Heading 1',\t\telement: 'h1' },\n { name: 'Heading 2',\t\telement: 'h2' },\n { name: 'Heading 3',\t\telement: 'h3' },\n { name: 'Heading 4',\t\telement: 'h4' },\n { name: 'Heading 5',\t\telement: 'h5' },\n { name: 'Heading 6',\t\telement: 'h6' },\n { name: 'Preformatted Text',element: 'pre' },\n { name: 'Address',\t\t\telement: 'address' },\n */\n { name: 'Title', attributes: { 'class': 'title' } },\n // { name: 'Heading 3', element: 'h1', attributes: { 'class': 'h3' } },\n // { name: 'Super paragraph',\t\telement: 'p', attributes: { 'class': 'superparagraph' } },\n\n //{ name: 'Italic Title',\t\telement: 'h2', styles: { 'font-style': 'italic' } },\n //{ name: 'Subtitle',\t\t\telement: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },\n //{\n //\tname: 'Special Container',\n //\telement: 'div',\n //\tstyles: {\n //\t\tpadding: '5px 10px',\n //\t\tbackground: '#eee',\n //\t\tborder: '1px solid #ccc'\n //\t}\n //},\n\n /* Inline Styles */\n\n // These are core styles available as toolbar buttons. You may opt enabling\n // some of them in the Styles combo, removing them from the toolbar.\n // (This requires the \"stylescombo\" plugin)\n /*\n { name: 'Strong',\t\t\telement: 'strong', overrides: 'b' },\n { name: 'Emphasis',\t\t\telement: 'em'\t, overrides: 'i' },\n { name: 'Underline',\t\telement: 'u' },\n { name: 'Strikethrough',\telement: 'strike' },\n { name: 'Subscript',\t\telement: 'sub' },\n { name: 'Superscript',\t\telement: 'sup' },\n */\n\n //{ name: 'Marker',\t\t\telement: 'span', attributes: { 'class': 'marker' } },\n\n //{ name: 'Big',\t\t\t\telement: 'big' },\n //{ name: 'Small',\t\t\telement: 'small' },\n //{ name: 'Typewriter',\t\telement: 'tt' },\n\n //{ name: 'Computer Code',\telement: 'code' },\n //{ name: 'Keyboard Phrase',\telement: 'kbd' },\n //{ name: 'Sample Text',\t\telement: 'samp' },\n //{ name: 'Variable',\t\t\telement: 'var' },\n\n //{ name: 'Deleted Text',\t\telement: 'del' },\n //{ name: 'Inserted Text',\telement: 'ins' },\n\n //{ name: 'Cited Work',\t\telement: 'cite' },\n //{ name: 'Inline Quotation',\telement: 'q' },\n\n //{ name: 'Language: RTL',\telement: 'span', attributes: { 'dir': 'rtl' } },\n //{ name: 'Language: LTR',\telement: 'span', attributes: { 'dir': 'ltr' } },\n\n /* Object Styles */\n { name: 'Button', element: 'a', attributes: { 'class': 'button' } },\n { name: 'Primary Button', element: 'a', attributes: { 'class': 'p-button' } },\n { name: 'Secondary Button', element: 'a', attributes: { 'class': 's-button' } },\n { name: 'More link', element: 'a', attributes: { 'class': 'more' } }\n //{\n //\tname: 'Styled image (left)',\n //\telement: 'img',\n //\tattributes: { 'class': 'left' }\n //},\n\n //{\n //\tname: 'Styled image (right)',\n //\telement: 'img',\n //\tattributes: { 'class': 'right' }\n //},\n\n //{\n //\tname: 'Compact table',\n //\telement: 'table',\n //\tattributes: {\n //\t\tcellpadding: '5',\n //\t\tcellspacing: '0',\n //\t\tborder: '1',\n //\t\tbordercolor: '#ccc'\n //\t},\n //\tstyles: {\n //\t\t'border-collapse': 'collapse'\n //\t}\n //},\n\n //{ name: 'Borderless Table',\t\telement: 'table',\tstyles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },\n //{ name: 'Square Bulleted List',\telement: 'ul',\t\tstyles: { 'list-style-type': 'square' } }\n ]\n\n this.sender = sender;\n }\n\n show($editor) {\n const CKEDITOR = window['CKEDITOR'] || {};\n //for ckeditor\n // console.log('ckeditor show');\n try {\n // We need to turn off the automatic editor creation first.\n CKEDITOR.disableAutoInline = true;\n } catch (e) { }\n\n var editor = CKEDITOR.inline('cmsCurrentEditor', this.ckeditorConfig);\n if (!CKEDITOR.stylesSet.get('default'))\n CKEDITOR.stylesSet.add('default', this.ckeditorStylesSet);\n\n var self = this;\n editor.on('change', function (evt) {\n // getData() returns CKEditor's HTML content.\n //$(\"#cmsCurrentEditor\").addClass(\"dirtyHtml\");\n //const itemId = $(\"#cmsCurrentEditor\").data('cms-item-id');\n const ed = document.querySelector('#cmsCurrentEditor');\n ed.classList.add('dirtyHtml');\n const itemId = ed.getAttribute('data-cms-item-id');\n\n //console.log(itemId);\n self.sender.markDirtyHtml(itemId);\n //console.log('Total bytes: ' + evt.editor.getData().length);\n });\n editor.on('paste', function (evt) {\n //console.log(evt.data.dataValue);\n //evt.data.dataValue = evt.data.dataValue.replace(/ /g, '');\n //evt.data.dataValue = evt.data.dataValue.replace(/

<\\/p>/g, '');\n //editor.insertHtml(evt.data.dataValue); return false;\n setTimeout(function () {\n CKEDITOR.instances.cmsCurrentEditor.setData(CKEDITOR.instances.cmsCurrentEditor.getData());\n }, 100);\n }, null, null, 9);\n }\n\n close($editor = null) {\n const CKEDITOR = window['CKEDITOR'] || {};\n //console.log('ckeditor close');\n if (typeof CKEDITOR.instances.cmsCurrentEditor != \"undefined\")\n CKEDITOR.instances.cmsCurrentEditor.destroy();\n\n //for (var instance in CKEDITOR.instances) {\n // CKEDITOR.instances[instance].destroy();\n //}\n\n }\n}\n","import { CmsRadioSender } from './cms-radio-sender'\nimport { CmsRadioReceiver } from './cms-radio-receiver'\nimport { CmsHtmlEditor } from './cms-html-editor'\nimport env from '../../env';\n\n// declare var CKEDITOR: any;\n// import * as $ from 'jquery';\n\n\nexport class CmsPageController {\n settings;//: any;\n sender;//: CmsRadioSender;\n receiver;//: CmsRadioReceiver;\n htmlEditor;//: CmsHtmlEditor;\n\n constructor() {\n this.settings = { root: \"body\", viewOnly: false };\n this.sender = new CmsRadioSender(this);\n this.receiver = new CmsRadioReceiver(this);\n this.htmlEditor = new CmsHtmlEditor(env.cmsEndpoint, this.sender);\n }\n init(options) {\n const $ = window['jQuery'];\n this.settings = Object.assign({}, /*default*/{ root: \"body\", viewOnly: false }, options);\n this.initGlobalVars();\n\n var self = this;\n $(\"[onclick]\").prop(\"onclick\", null);\n $(\"[dblclick]\").prop(\"dblclick\", null);\n $(self.settings.root).off(\"click dblclick\", \"*\");\n $(self.settings.root).on(\"click dblclick\", \"*\", function (e) {\n //$(\".cms_html_editor_img_selected\").removeClass(\"cms_html_editor_img_selected\");\n // console.log($(e.target).hasClass(\"allowClick\"));\n // console.log(e.target);\n\n if (!$(e.target).hasClass(\"allowClick\")) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n if ($(this).attr(\"contenteditable\") === \"true\" ||\n $(\"#cms_html_editor_source_id\").is(\":visible\")) {\n e.stopPropagation();\n return;\n }\n if (!self.settings.viewOnly)\n self.selectItem($(this), false, e.type === \"dblclick\");\n });\n\n if (self.settings.viewOnly) return; // stop the editing logic for viewonly mode.\n\n // ctrl + s for html block\n $(self.settings.root).on('keydown', \"#cmsCurrentEditor\", function (e) {\n if (e.ctrlKey && e.which === 83) {\n //var itemId = $(this).data(\"cms-item-id\");\n //if (!itemId)\n // itemId = $(this).closest(\"[data-cms-item-id]\").data(\"cms-item-id\");\n //window.parent.cms.site.saveHtml(itemId);\n //e.preventDefault();\n\n self.sender.saveAllDirtyHtml(self.getAllDirtyHtml());\n return false;\n }\n });\n }\n\n selectItemFromController(id) {\n const $ = window['jQuery'];\n var item = $(\".cms_item[data-cms-item-id='\" + id + \"']\");\n this.scrollTo(item);\n this.selectItem(item, true);\n }\n\n selectItem($item, fromController, doubleclicked = false) {\n //console.log(\"select item - \" + fromController + \" - \" + doubleclicked);\n //console.log($item);\n var editor = $item.closest(\"[contenteditable]\");\n if (editor.length > 0)\n return;\n var cke_top = $item.closest(\".cke_top\");\n if (cke_top.length > 0)\n return;\n\n this.closeEditingItem();\n //console.log($item);\n if (typeof $item === \"undefined\") return;\n if ($item.length === 0) return;\n this.findItem($item, fromController, 0, doubleclicked);\n }\n\n closeEditingItem() {\n const $ = window['jQuery'];\n //console.log(\"close editing item\");\n $(\"[contenteditable]\").removeAttr(\"contenteditable\");\n $(\"#cms_hovermenu\").remove();\n $(\".cms_editing_item\").removeClass(\"cms_editing_item\");\n\n }\n\n findItem($item, fromController, depth, doubleclicked) {\n if (depth > 100) return false;\n // console.log($item, fromController, depth, doubleclicked)\n if (typeof $item.attr(\"data-cms-html\") !== \"undefined\" && $item.attr(\"data-cms-html\") === \"true\") {\n $item.attr(\"contenteditable\", \"true\");\n this.showHtmlEditor($item);\n }\n if (typeof $item.attr(\"data-cms-item-id\") !== \"undefined\") {\n //$item.attr(\"contenteditable\", \"true\");\n $item.addClass(\"cms_editing_item\");\n if (!fromController) {\n //window.parent.cms.site.selectControllerItem($item.attr(\"data-cms-item-id\"),\n // typeof doubleclicked != \"undefined\" && doubleclicked == true\n //);\n this.sender.selectControllerItem({\n id: $item.attr(\"data-cms-item-id\"),\n openEdit: typeof doubleclicked !== \"undefined\" && doubleclicked === true\n });\n\n }\n\n //show_hovermenu($item);\n\n } else {\n var editableParent = $item.parents(\".cms_item[data-cms-item-id], [data-cms-html]\");\n if (editableParent.length > 0)\n this.findItem(editableParent.first(), fromController, depth + 1, doubleclicked);\n\n }\n }\n\n sameContent(a, b) {\n return a === b;\n }\n\n showHtmlEditor($item) {\n const $ = window['jQuery'];\n var editor = $item;\n //console.log(editor);\n //var $menu = $(\"#cms_html_editor_ctrl\");\n ////$menu.css(\"top\", $item.offset().top - 40);\n ////$menu.css(\"left\", $item.offset().left);\n //$menu.show();\n //initHtmlEditor($item);\n\n if (editor.attr(\"id\") === \"cmsCurrentEditor\") return;\n\n $(\"#cmsCurrentEditor\").attr(\"id\", \"\");\n this.htmlEditor.close(editor);\n\n editor.attr(\"id\", \"cmsCurrentEditor\");\n //editor.data(\"current-content\", editor.html());\n\n this.htmlEditor.show(editor);\n //setHandlers($item);\n\n }\n\n\n initGlobalVars() {\n const $ = window['jQuery'];\n window[\"cmsPage\"] = $.extend({}, window[\"cmsPage\"] || {}, {\n htmleditor: {\n // cmsPage.htmleditor.getAnchors();\n getAnchors: function (opt) {\n //var options = $.extend({}, opt);\n //console.log(options);\n var anchors = [];\n\n $(\"a[name]\").each(function (inx, obj) {\n anchors.push({ id: $(obj).attr(\"id\"), name: $(obj).attr(\"name\") });\n });\n\n $(\"[data-cms-item-name],[data-cms-anchor]\").each(function (inx, obj) {\n if (typeof $(obj).attr(\"data-cms-anchor\") !== \"undefined\" && $(obj).attr(\"data-cms-anchor\") !== \"\" && $(obj).parents(\".owl-item\").length === 0) {\n anchors.push({ id: null, name: $(obj).attr(\"data-cms-anchor\") });\n } else if ($(obj).attr(\"data-cms-item-name\") !== \"\" && $(obj).parents(\".owl-item\").length === 0) {\n anchors.push({ id: null, name: $(obj).attr(\"data-cms-item-name\") });\n }\n });\n\n return anchors;\n }\n }\n });\n }\n\n scrollTo(target) {\n const $ = window['jQuery'];\n if (typeof target === \"undefined\") return;\n if ($(target).length === 0) return;\n var htmlbody = $('html,body');\n var top = 0;\n if ($(target).height() > $(window).height())\n top = $(target).offset().top;\n else {\n top = $(target).offset().top - Math.floor(($(window).height() - $(target).height()) / 2);\n }\n //console.log(top);\n //htmlbody.animate({ scrollTop: top }, 500, 'easeInOutQuint');\n htmlbody.animate({ scrollTop: top }, 500);\n }\n\n getCurrentHtml() {\n const CKEDITOR = window['CKEDITOR'] || {};\n try {\n return CKEDITOR.instances.cmsCurrentEditor.getData();\n } catch (e) { return \"\"; }\n }\n\n getAllDirtyHtml() {\n const $ = window['jQuery'];\n var self = this;\n var htmlChanges = [];\n $(\".dirtyHtml\").each(function (inx, obj) {\n var $section = $(obj);\n var content = $section.is(\"#cmsCurrentEditor\") ? // if the html editor is active, it needs to get the html from the editor.\n self.getCurrentHtml() : $section.html();\n if ($section.is(\"[data-cms-section-id]\")) {\n // section level?\n let $item = $section.closest(\"[data-cms-item-id]\");\n htmlChanges.push({ ItemId: $item.data(\"cms-item-id\"), SectionId: $section.data(\"cms-section-id\"), Content: content });\n } else if ($section.is(\"[data-cms-item-id]\")) {\n // section level?\n let $item = $section;\n htmlChanges.push({ ItemId: $item.data(\"cms-item-id\"), SectionId: \"Content\", Content: content });\n }\n });\n return htmlChanges;\n }\n\n getHtml(itemid: any) {\n const $ = window['jQuery'];\n this.htmlEditor.close();\n var self = this;\n var item = $(\".cms_item[data-cms-item-id='\" + itemid + \"']\");\n\n var formvals = { Content: this.cms_replace_item_html(item) };\n\n //cms_msg_progressing(\"#save_message\", \"Saving...\");\n if ($(\"[data-cms-section-id]\", item).length > 0) {\n $(\"[data-cms-section-id]\", item).each(function (inx, section) {\n var closestItemId = $(section).closest(\".cms_item\").data(\"cms-item-id\");\n if (closestItemId === itemid) {\n var id = $(section).attr(\"data-cms-section-id\");\n formvals[id] = self.cms_replace_item_html($(section)); //.find(\">:first-child\")().html();\n\n }\n });\n }\n return formvals;\n }\n\n cms_replace_item_html(item) {\n return item.html();\n // var $tmp = $(\"

\").html(item.html());\n // if ($tmp.find('.cms-skeleton').length > 0)\n // return $tmp.find('.cms-skeleton').html();\n // else\n // return item.html();\n //tmp.find(\".cms_ctrl_in_editor\").each(function (inx, obj) {\n // var ctrlid = $(obj).attr(\"data-cms-ctrl-id\");\n // $(obj).replaceWith(\"__cms__ctrl:\" + ctrlid + \"__\");\n //});\n //return tmp.html();\n }\n\n}\n","import React, { useEffect } from 'react';\nimport { useRouter } from '../../../components';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport env from '../../../env';\nimport { loadJs } from '../../../lib/net-loader';\nimport { CmsPageController } from '../../services/cms-page-controller';\nimport { ErrorPopup, Loading } from '../../../components';\n\n// function useQuery() {\n// return new URLSearchParams(useLocation().search);\n// }\n\nexport function EditPage(props) {\n //const [page, setPage] = useState(null);\n\n //const pageId = props.pageId;\n const { query } = useRouter();\n const { cmsViewMode = 'edit', id, publishVer, editVer } = query;\n const pageId = id;\n\n //console.log(pageId, cmsViewMode, env.apiBase, env)\n\n const get = useGet();\n useEffect(() => {\n get.send(env.apiBase + '/api/cms/GetPage/' + pageId + '?cmsViewMode=' + cmsViewMode\n + (publishVer ? '&publishVer=' + publishVer : '')\n + (editVer ? '&editVer=' + editVer : '')\n );\n // eslint-disable-next-line\n }, [pageId]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //console.log(router.pathname);\n //console.log(res);\n\n const pageData = get.response.data;\n const cmsOption = { isCmsEdit: true };\n cmsOption.pageData = pageData;\n\n const cmsPageController = new CmsPageController();\n \n if (pageData){\n\n let _class = document.querySelector('div.body-content').className.replace(/kick__start__juicer__blender__page/g, '');\n if(pageData.pageUrl === '/test' || pageData.pageUrl === '/kickstart'){\n document.querySelector('div.body-content').className= _class + \" kick__start__juicer__blender__page\"; \n }\n else{\n document.querySelector('div.body-content').className= _class;\n }\n }\n\n if (cmsViewMode !== 'viewonly') {\n const ver = 1;\n loadJs(\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\n ).then(data => {\n return loadJs(\n env.resourceBase + '/dist/cms/ckeditor/ckeditor.js?v=' + ver\n )\n }).then(data => {\n // console.log('script loaded ', data);\n cmsPageController.init({});\n document.querySelector('body').classList.add('cmsedit');\n }).catch(error => console.log(error));\n } else {\n const ver = 1;\n loadJs(\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\n ).then(data => {\n cmsOption.isCmsEdit = false;\n cmsPageController.init({ viewOnly: true });\n }).catch(error => console.log(error));\n }\n\n //setPage(res.response.data);\n const sectionItems = pageData.sections.map((section, index) =>\n
\n );\n return (\n
\n {sectionItems}\n
\n );\n}\n\n\nfunction Section(props) {\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","import React from 'react';\nimport { useRouter } from '../../components';\n\nexport function SearchBar({onCloseMenu}) {\n const [keyword, setKeyword ] = React.useState('')\n const { navigate } = useRouter();\n function search(e) {\n e.preventDefault();\n onCloseMenu();\n navigate('/search-results?q=' + encodeURIComponent(keyword))\n }\n function onChange(e) {\n setKeyword(e.target.value);\n }\n return (\n
search(e)}>\n \n
);\n\n}\n","import React, { useState, useEffect } from \"react\";\nimport { SiteLink } from \"../../components\";\nimport { useStore } from \"../../store\";\n//import { FaChevronDown } from 'react-icons/fa';\nimport { FaPlus } from \"react-icons/fa\";\nimport { FaMinus } from \"react-icons/fa\";\nimport { SearchBar } from \"./searchBar\";\n\nexport function NavBar(props) {\n const open = props.open;\n //const currentLocation = props.currentLocation;\n const { state } = useStore();\n\n const menu = state.menu || { items: [] };\n const currentLocation =\n state.history && state.history.length > 0\n ? state.history[state.history.length - 1].path\n : \"\";\n const depth = 1;\n const menuItemElts = menu.items.map((item, index) => (\n \n ));\n return (\n
\n \n
\n \n
\n
\n );\n}\n\nfunction MenuItem(props) {\n const [subMenuOpened, setSubMenuOpened] = useState(false);\n const item = props.item;\n const subItems = item.items || [];\n const currentLocation = props.currentLocation;\n\n const subItemsElts =\n subItems.length > 0\n ? subItems.map((subItem, index) => (\n \n ))\n : null;\n\n useEffect(() => {\n //console.log('navbar', currentLocation);\n setSubMenuOpened(false);\n }, [currentLocation]);\n\n function closeMenu() {\n props.onCloseMenu();\n }\n\n function toggleSubmenu(e) {\n e.preventDefault();\n e.stopPropagation();\n setSubMenuOpened(!subMenuOpened);\n }\n\n return (\n
  • \n closeMenu()}\n >\n {item.title}\n {subItemsElts && (\n toggleSubmenu(e)}>\n {subMenuOpened ? : }\n \n )}\n \n {subItemsElts &&
      {subItemsElts}
    }\n
  • \n );\n}\n\nfunction SubMenuItem(props) {\n const item = props.item;\n function closeMenu() {\n props.onCloseMenu();\n }\n\n return (\n
  • \n closeMenu()}\n >\n {item.title}\n \n
  • \n );\n}\n","import { css } from '@emotion/core';\nimport { variables, mq } from '../../cssInJs';\nexport default {\n button: css(mq({\n fontFamily: variables.familyHeader,\n position: 'absolute',\n left: '1rem',\n lineHeight: '1.6rem',\n color: '#ddd',\n fontSize: ['0.8rem', null, '0.9rem']\n })),\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { SiteLink } from '../../components';\nimport { FaAngleLeft } from 'react-icons/fa';\nimport { useHistoryStore } from '../../components';\nimport style from './backButtonStyle';\n\nexport function BackButton(props) {\n\n const history = useHistoryStore();\n\n function goBack(e) {\n history.pop();\n }\n\n if (history.last()) {\n return (\n BACK\n )\n } else {\n return null;\n }\n}","import { css } from '@emotion/core';\nimport { mq } from '../../cssInJs';\n\nconst rs = [\n { w: 44, h: 44, barW: 28, barH: 3, space: 8 },\n { w: 56, h: 56, barW: 44, barH: 3, space: 10 }\n]\n\nconst line = css(mq({\n width: [rs[0].barW, null, rs[1].barW],\n height: [rs[0].barH, null, rs[1].barH],\n borderRadius: '4px',\n position: 'absolute',\n transitionProperty: 'transform',\n backgroundColor: '#fff',\n display: 'block',\n transitionDuration: '0.15s',\n transitionDelay: '0.15s',\n transitionTimingFunction: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n}))\n\nexport default {\n button: css(mq({\n cursor: 'pointer',\n zIndex: '1000',\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.3s ease-in-out',\n padding: '0',\n top: [0],\n width: [rs[0].w, null, rs[1].w],\n height: [rs[0].h, null, rs[1].h],\n right: [0, null, 20],\n background: 'black', //variables.primaryColor,\n border: 'none',\n outline: 'none',\n font: 'inherit',\n color: 'inherit',\n textTransform: 'none',\n '&:focus': {\n outline: 'none',\n },\n \n '@media(min-width: 1366px)': {\n top: 12,\n width: rs[1].w,\n height: rs[1].h,\n right: 20,\n }\n })),\n\n buttonScrolled: css(mq({\n top: [0, null, 0]\n })),\n\n hamburger: css(mq({\n width: [rs[0].barW, null, rs[1].barW],\n height: [rs[0].barH + rs[0].space * 2, null, rs[1].barH + rs[1].space * 2],\n position: 'relative',\n display: 'block',\n })),\n\n line1: css(mq(line, {\n top: 0,\n transition: 'top 0.3s 0.1s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s 0.1s linear',\n })),\n line2: css(mq(line, {\n transition: 'top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n top: [rs[0].space, null, rs[1].space],\n })),\n line3: css(mq(line, {\n top: [rs[0].space * 2, null, rs[1].space * 2],\n })),\n\n lineActive1: css({\n opacity: '0',\n top: 18,\n transition: 'top 0.3s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.2s linear',\n }),\n lineActive2: css({\n transform: 'rotate(-135deg)',\n transition: 'top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1)',\n }),\n lineActive3: css(mq({\n transform: [`translate3d(0, -${rs[0].space}px, 0) rotate(-45deg)`, null, `translate3d(0, -${rs[1].space}px, 0) rotate(-45deg)`],\n transitionDelay: '0.32s',\n transitionTimingFunction: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n }))\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './hamburgerStyle';\n\nexport function Hamburger({ opened, toggleMenu, scrolled }) {\n\n return \n}","import { css } from \"@emotion/core\";\nimport { mq } from \"../../cssInJs\";\n\nexport default {\n top: css(\n mq({\n height: [44, null, 56],\n background: \"black\",\n position: \"fixed\",\n width: \"100%\",\n zIndex: \"999\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"all 0.3s\",\n \"@media(min-width: 1366px)\": {\n height: 80,\n },\n })\n ),\n topScrolled: css(\n mq({\n height: [44],\n \"@media(min-width: 1366px)\": {\n height: 56,\n },\n })\n ),\n logo: css(mq({})),\n logoImg: css(\n mq({\n display: \"block\",\n transition: \"all 0.3s\",\n marginTop: [-0.365],\n height: [18.44],\n \"@media(min-width: 1366px)\": {\n marginTop: -0.66 /*2/101 * h*/,\n height: 33.527 /*80 / (241/101)*/,\n },\n })\n ),\n logoImgScrolled: css(\n mq({\n \"@media(min-width: 1366px)\": {\n marginTop: -0.467 /*2/101 * h*/,\n height: 23.469 /*56 / (241/101)*/,\n },\n })\n ),\n\n buyNow: mq({\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"#97c424\",\n lineHeight: 1,\n padding: ['17px 0.5rem',null,'20px 1rem'] ,\n transition: \"all 0.2s ease-in-out\",\n fontSize: [\"10px\", null, \"1rem\"],\n right: ['45px', '60px', '100px'],\n \"@media(min-width: 1366px)\": {\n padding: \"32px 1rem\",\n right: '100px',\n },\n\n a: {\n color: \"white\",\n fontWeight: 600,\n \"&:hover\": {\n textDecoration: \"none\",\n },\n },\n }),\n\n buyNowScrolled: mq({\n padding: [\"17px 0.5rem\"],\n \"@media(min-width: 1366px)\" : {\n padding : '20px 1rem'\n }\n }),\n};\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n\nimport { useState, Fragment } from \"react\";\nimport { SiteLink, useRouter } from \"../../components\";\nimport { useScrollPosition } from \"@n8tb1t/use-scroll-position\";\nimport { NavBar } from \"./navBar\";\nimport { BackButton } from \"../backButton/backButton\";\nimport { Hamburger } from \"../hamburger/hamburger\";\nimport style from \"./topHeaderStyle\";\n\nexport function TopHeader(props) {\n const [menuOpened, setMenuOpened] = useState(false);\n const [scrolled, setScrolled] = useState(false);\n const { path } = useRouter();\n\n console.log(\"path\", path);\n\n useScrollPosition(\n ({ prevPos, currPos }) => {\n //console.log(currPos.x)\n //console.log(currPos.y);\n if (currPos.y > 90) {\n setScrolled(true);\n } else {\n setScrolled(false);\n }\n //setScrolled(currPos.y > 90)\n },\n [],\n null,\n true\n );\n\n function toggleMenu(e) {\n setMenuOpened(!menuOpened);\n }\n\n function onCloseMenu() {\n setMenuOpened(false);\n }\n\n function backTop() {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n return (\n \n
    \n \n \n \n \n\n \n \n\n {path.includes(\"/gourmet-pro-multifunctional-steam-airfry-oven\") && (\n
    \n BUY NOW\n
    \n )}\n
    \n
    \n );\n}\n\n///\n","import { variables, mq } from '../../cssInJs';\n\nexport default {\n footerWrapper: {\n background: 'black',\n padding: '2rem 1rem 9rem'\n },\n footer: {\n maxWidth: 960,\n margin: 'auto',\n fontFamily: variables.familyHeader,\n },\n logo: {\n borderBottom: 'solid 2px #555',\n paddingBottom: '1rem',\n },\n logoImg: mq({\n maxHeight: [20, null, 22],\n //marginLeft: [10]\n }),\n socialAndLinks: mq({\n paddingTop: [10, null, 15]\n }),\n social: {\n marginLeft: '-10px',\n },\n socialIcon: {\n width: '30px',\n height: '30px',\n marginLeft: '10px',\n marginRight: '10px',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n transition: '.3s',\n display: 'inline-block',\n },\n\n links: mq({\n textAlign: ['left', null, 'right'],\n marginTop: [15, null, 5],\n fontSize: '0.75rem',\n color: '#ebebeb;',\n\n 'a': {\n color: '#ebebeb;',\n fontSize: '0.75rem',\n },\n 'a:hover, a:focus': {\n color: '#fff'\n }\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './footerStyle';\nimport { SiteLink } from '../../components';\n\nexport function Footer(props) {\n const year = (new Date()).getFullYear();\n //const ver = env.ver;\n\n return (\n
    \n
    \n
    \n \"logo\"\n
    \n\n
    \n
    \n\n \n
    \n
    \n
    \n
      \n
    • ©{year} Cuisinart - Conair Australia
    • \n
    • All rights reserved
    • \n
    • Privacy Policy
    • \n
    • Disclaimer
    • \n
    \n
    \n
    \n
    \n\n {/*
    \n \n \"Go\n \n
    */}\n
    \n
    \n );\n}\n\nfunction SocialIcons() {\n return (\n \n )\n}\n\n","import Hammer from '@egjs/hammerjs'\nimport { gsap } from 'gsap';\n\nexport default class BottomDrawer {\n constructor(el, options = {}) {\n const defaults = { status: 'expanded' };\n this.settings = Object.assign({}, defaults, options);\n this.slider = el;\n\n // location\n this.currentTranslateY = 0;\n this.size = null;\n this.status = this.settings.status;\n this.inititialised = false;\n this.tsEventHandled = new Date();\n }\n\n init() {\n this.size = this.getSize(this.slider);\n //console.log(this.size)\n //this.close()\n if (this.status === 'expanded')\n this.open()\n else\n this.close()\n\n //\n const hammer = new Hammer.Manager(this.slider);\n hammer.add(new Hammer.Pan({ direction: Hammer.DIRECTION_VERTICAL, threshold: 0 }));\n\n hammer.on('panstart pan panend', e => {\n //console.log(e.type, e)\n if (e.type === 'panend') {\n this.switch(e.deltaY);\n } else if (e.type === 'pan') {\n this.moveDeltaTmp(e.deltaY)\n }\n });\n\n this.initEvent();\n }\n\n initEvent() {\n const bar = this.slider.querySelector('.bottomMenu__bar');\n if (this.inititialised) {\n bar.removeEventListener('click', (e) => this.handleClick(e, this))\n }\n bar.addEventListener('click', (e) => this.handleClick(e, this))\n this.inititialised = true;\n }\n\n handleClick(e, self) {\n e.preventDefault();\n e.stopPropagation();\n const dt = (new Date()) - this.tsEventHandled;\n //console.log('handleClick', dt);\n\n if (dt < 100) return;\n self.switch();\n }\n\n moveDeltaTmp(delta) {\n const y = this.getBaseY() + delta;\n //console.log(y,delta)\n\n this.currentTranslateY = y < 0 ? 0 : (y > this.size.max ? this.size.max : y);\n this.move(this.currentTranslateY);\n }\n\n switch(delta) {\n this.tsEventHandled = new Date();\n if ((delta < 0 && this.status === 'expanded') || (delta > 0 && this.status === 'collapsed')) return;\n const targetY = this.getTargetY();\n //console.log('return', this.currentTranslateY, targetY)\n\n gsap.fromTo(this.slider, { y: this.currentTranslateY }, { duration: 0.3, y: targetY, ease: 'power1' });\n this.status = this.status === 'collapsed' ? 'expanded' : 'collapsed';\n this.currentTranslateY = targetY;\n }\n\n getBaseY() {\n return this.status === 'collapsed' ? this.size.max : this.size.min;\n }\n\n getTargetY() {\n return this.status === 'collapsed' ? this.size.min : this.size.max;\n }\n\n getSize(el) {\n const links = el.querySelector('.bottomMenu__links');\n const bar = el.querySelector('.bottomMenu__bar');\n return { min: 0, max: links.offsetHeight, barHeight: bar.offsetHeight };\n }\n\n move(dy) {\n this.slider.style.transform = `translate3d(0, ${dy}px, 0)`;\n }\n\n close() {\n this.status = 'collapsed';\n this.currentTranslateY = this.size.max;\n this.move(this.currentTranslateY);\n }\n\n open() {\n this.status = 'expanded';\n this.currentTranslateY = this.size.min;\n this.move(this.currentTranslateY);\n }\n}","import React, { useLayoutEffect, useRef } from 'react';\nimport { useRouter } from '../../components';\nimport { SiteLink } from '../../components';\nimport BottomDrawer from '../../components/bottomDrawer'\nimport { isMin } from '../../cssInJs'\n\nexport function BottomDock(props) {\n const links = [\n { url: '/products', title: 'PRODUCTS', icon: 'products-green.png', iconHover: 'products-white.png' },\n { url: '/warranty', title: 'WARRANTY', icon: 'warranty-green.png', iconHover: 'warranty-white.png' },\n { url: '/recipes', title: 'RECIPES', icon: 'recipes-green.png', iconHover: 'recipes-white.png' },\n { url: '/contact', title: 'CONTACT', icon: 'contact-green.png', iconHover: 'contact-white.png' }\n ];\n\n //const path = usePath();\n const { pathname } = useRouter();\n\n const isCurrent = (link) => {\n return pathname && pathname.toLowerCase() === link.toLowerCase();\n }\n\n const linkElts = links.map((link, index) =>\n
  • \n \n
    \n {link.title}\n {link.title}\n
    \n
    {link.title}
    \n
    \n
  • \n );\n\n const bottomMenu = useRef(null);\n useLayoutEffect(() => {\n //console.log('useLayoutEffect');\n const slider = new BottomDrawer(bottomMenu.current, { status: isMin.md() ? 'collapsed' : 'expanded' });\n setTimeout(() => slider.init(), 1000)\n }, [])\n\n return (\n <>\n \n
    \n \n );\n}\n","import { mq } from '../../cssInJs';\n\nexport default {\n instagrams: {\n marginLeft: '-10px',\n marginRight: '-10px',\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n },\t\n topPadding: mq({\n height: [24, null, 30],\n backgroundColor: 'white',\n '@media(min-width: 1366px)': {\n height: 50\n }\n }),\n\n qa: {\n marginBottom: '1rem',\n borderBottom: 'solid 1px #ccc',\n },\n qaQuestion: {\n fontWeight: 'bold',\n marginBottom: '0.3rem',\n },\n qaAnswer: {\n\n }\n}","import React from \"react\";\nimport { SiteLink } from \"../../components\";\n\nexport function Breadcrumb({ breadcrumb }) {\n const containsAirPurificationLink = breadcrumb.items?.find(\n (item) => item.link === \"/air-purification\"\n );\n if (containsAirPurificationLink) {\n containsAirPurificationLink.link = \"/products\";\n }\n\n return (\n
      \n {breadcrumb.items.map((item, index) => Item(item, index))}\n
    \n );\n}\n\nfunction Item(item, index) {\n if (item.link) {\n return (\n
  • \n {item.title}\n
  • \n );\n } else {\n return
  • {item.title}
  • ;\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport { NotFound } from '../../../components';\nimport env from '../../../env';\nimport { useStore } from '../../../store';\nimport { ErrorPopup, Loading } from '../../../components';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPartial({pageOptions = null}) {\n const { dispatch } = useStore();\n const [pageLoaded, setPageLoaded] = useState(false);\n const [data, setData] = useState(null);\n //const path = usePath();\n //log('view page', path);\n const pathname = '/partials/common-footer';\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n useEffect(() => {\n if (data){\n dispatch({ type: 'SET_PAGE', payload: data.data })\n dispatch({ type: 'SET_MENU', payload: data.menu })\n }\n // eslint-disable-next-line\n }, [data]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\n //const menuData = get.response.menu;\n const cmsOption = { pageOptions: pageOptions};\n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n setData(get.response);\n //dispatch({ type: 'SET_STATE', payload: { page: pageData, menu: menuData } })\n //dispatch({ type: 'SET_PAGE', payload: pageData })\n //dispatch({ type: 'SET_MENU', payload: menuData })\n //document.title = pageData.pageTitle;\n return null;\n } else if (!pageData) {\n return ()\n }\n\n log('3. call rendering memo')\n return ;\n}\n\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
    \n )\n }\n );\n return (\n <>\n {sectionItems}\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './tileStyle';\n\nimport Slider from \"react-slick\";\nimport utils from '../../utils';\nimport { SiteLink } from '../../components';\n\nexport function ProductTiles({ products }) {\n var settings = {\n dots: false,\n infinite: false,\n speed: 500,\n autoplaySpeed: 3000,\n //fade: false,\n autoplay: true,\n slidesToShow: 4,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n return (\n
    \n
    \n \n {products.map((product, index) =>\n \n )}\n \n
    \n
    \n );\n}\n\n\nfunction Tile({ product, tileStyle }) {\n const style = tileStyle;\n const imageUrl = product.productThumbnail ? utils.site.resourcePath(product.productThumbnail) : '/assets/product-empty.png';\n //console.log(imageUrl)\n const productUrl = product.productUrl ? product.productUrl : `/product/${product.productCode}`;\n return (\n
    \n \n
    \n
    \n
    \n
    \n {product.productName}\n {/*
    \n
    \n
    */}\n
    \n\n
    \n {product.priceText ? product.priceText : ''}\n
    \n\n
    \n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n\nexport function InstaEmbedByLink({ className, url }) {\n if (!url) return null;\n // https://www.instagram.com/p/B4zJYkxHRMu/?utm_source=ig_web_copy_link\n // https://www.instagram.com/reel/CdsPgIFDINY/\n\n const type =\n url.indexOf(\"/reel/\") > 0 ? \"reel\" : url.indexOf(\"/tv/\") > 0 ? \"tv\" : \"p\";\n let parts = url.split(`instagram.com/${type}/`);\n if (parts.length !== 2) return null;\n parts = parts[1].split(\"/\");\n if (parts.length === 0) return null;\n\n const instagramCode = parts[0];\n // console.log(instagramCode);\n const template = `
    `;\n\n return (\n \n );\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport { useState, useEffect, Fragment } from \"react\";\nimport { Loading } from \"../../components\";\nimport { createPortal } from \"react-dom\";\nimport { MdClose } from \"react-icons/md\";\n\nfunction Portal({ children }) {\n const [el] = useState(document.createElement(\"div\"));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\nexport function TiktokEmbedByLink({ className, url }) {\n const [code, setCode] = useState();\n const [openPopup, setOpenPopup] = useState(false);\n\n const s = getStyle();\n\n useEffect(() => {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n fetch(`https://www.tiktok.com/oembed?url=${url}`, { signal: signal })\n .then((res) => res.json())\n .then((res) => {\n setCode(res);\n })\n .catch((error) => {\n setCode({ error: \"Load error\" });\n });\n\n return function cleanup() {\n abortController.abort();\n };\n\n // eslint-disable-next-line\n }, []);\n\n function close() {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }\n\n function open() {\n setOpenPopup(true);\n document.body.style.overflow = \"hidden\";\n }\n\n if (!code) {\n return (\n
    \n \n
    \n );\n }\n \n return (\n \n {openPopup && (\n \n
    \n \n \n
    \n \n\n
    \n \n
    \n
    \n )}\n\n {code.error ? (\n
    \n \n Load Error\n
    {url}
    \n
    \n \n ) : (\n \n {code.title}\n \n
    \n \"watch\n
    \n \n Watch on Tiktok\n \n \n \n )}\n
    \n //
    \n );\n}\n\nfunction TiktokItem({ styleItem, html }) {\n \n const template = html;\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n const existingScript = document.getElementById(\"tiktokEmbedScript\");\n if (existingScript) {\n document.body.removeChild(existingScript);\n }\n\n const script = document.createElement(\"script\");\n script.type = `text/javascript`;\n script.id = \"tiktokEmbedScript\";\n script.async = true;\n script.src = \"https://www.tiktok.com/embed.js\";\n\n document.body.appendChild(script);\n\n let vvv = null;\n const abc = setInterval(() => {\n console.log(\"check inverval tiktokEmbedScript\");\n if (document.getElementById(\"tiktokEmbedScript\")) {\n vvv = setTimeout(() => {\n setShow(true);\n }, 2000);\n clearInterval(abc);\n }\n }, 100);\n\n return function cleanup() {\n document.body.removeChild(script);\n clearInterval(abc);\n if (vvv) {\n clearTimeout(vvv);\n }\n };\n\n // eslint-disable-next-line\n }, []);\n\n return (\n \n {!show && }\n \n \n );\n}\n\nfunction getStyle() {\n const style = {\n titok__embed__container: {\n maxWidth: \"324px\",\n position: \"relative\",\n cursor: \"pointer\",\n \"&:after\": {\n content: '\"\"',\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n //zIndex: 2,\n backgroundColor: \"rgba(0,0,0,0.5)\",\n position: \"absolute\",\n },\n },\n\n titok__embed__container__error: {\n width: \"324px\",\n position: \"relative\",\n cursor: \"pointer\",\n height: \"300px\",\n backgroundColor: \"grey\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n titok__embed__watch__icon: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 2,\n },\n titok__embed__watch__icon__text: {\n fontSize: \"14px\",\n marginTop: \"-1.5rem\",\n fontWeight: 500,\n textAlign: \"center\",\n color: \"white\",\n },\n\n titok__embed__watch__icon__text__error: {\n fontSize: \"14px\",\n fontWeight: 500,\n textAlign: \"center\",\n color: \"white\",\n },\n\n portal__background: {\n backgroundColor: \"rgba(0,0,0,0.8)\",\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: \"9998\",\n },\n\n portal__close__btn: {\n position: \"fixed\",\n zIndex: \"9999\",\n right: 0,\n top: 0,\n margin: \"1rem\",\n cursor: \"pointer\",\n svg: {\n width: \"30px\",\n height: \"30px\",\n color: \"white\",\n },\n },\n\n portal__contents: {\n position: \"fixed\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 9999,\n //width: \"100%\",\n },\n\n tiktok__item__show: {\n maxHeight: \"0px\",\n overflow: \"hidden\",\n \"&.show\": {\n maxHeight: \"1000px\",\n backgroundColor: \"white\",\n },\n },\n };\n return style;\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport style from \"./productViewStyle\";\nimport React from \"react\";\nimport env from \"../../env\";\nimport { SiteLink, NotFound } from \"../../components\";\nimport { useGet } from \"../../components\";\nimport { useRouter } from \"../../components\";\nimport utils from \"../../utils\";\nimport { ErrorPopup, Loading } from \"../../components\";\nimport { Breadcrumb } from \"../../components/breadcrumb/breadcrumb\";\nimport { ViewPartial } from \"../../cms/pages/partials/viewPartial\";\n//import { CommonProductBottom } from '../../cms/pages/partials/commonProductBottom';\n//import { Tile } from './productTile';\nimport { YoutubeEmbed } from \"../../components\";\nimport { useInstagram } from \"../../components\";\nimport { useBV } from \"../bazzarVoice/useBV\";\n//import { ImagePopup } from 'modules/imagePopup/imagePopup';\n// import InstagramEmbed from \"react-instagram-embed\";\nimport Slider from \"react-slick\";\nimport FsLightbox from \"fslightbox-react\";\nimport { MetaTag } from \"../../components\";\nimport { FaRegFilePdf } from \"react-icons/fa\";\nimport { FaRegPlayCircle } from \"react-icons/fa\";\nimport { debounce } from \"../../lib/utils-core/debounce\";\nimport { gtm } from \"../../lib/tracking\";\nimport { ProductTiles } from \"../productTile--slider/productTiles\";\nimport { IoMdOpen } from \"react-icons/io\";\nimport { InstaEmbedByLink } from \"../embed/instagram\";\nimport { TiktokEmbedByLink } from \"../embed/tiktok\";\n\nexport function ProductView(props) {\n const { query } = useRouter();\n const [loaded, setLoaded] = React.useState(false);\n const get = useGet();\n useInstagram();\n\n const productCode = query.id || \"\";\n const category = query.category || \"\";\n const slug = query.slug || \"\";\n //console.log(category, slug, productCode)\n\n React.useEffect(() => {\n const url = productCode\n ? `/api/product/getProduct/${productCode}`\n : `/api/product/getProductByUrl?category=${category}&slug=${slug}`;\n get.send(env.apiBase + url);\n setLoaded(false);\n // eslint-disable-next-line\n }, [productCode, slug]);\n\n if (get.loading()) {\n return ;\n } else if (get.hasErrors() && get.containsErrorMessage(\"no product\")) {\n return ;\n } else if (get.hasErrors()) {\n return ;\n }\n\n console.log(get);\n const data = get.response;\n\n if (get.done() && !loaded) {\n setLoaded(true);\n const pageUrl = productCode\n ? `/product/${productCode}`\n : `/products/${category}/${slug}`;\n const pageTitle =\n data.totalCnt === 0 ? \"No product found\" : data.productName;\n gtm.pageView(pageUrl, pageTitle);\n }\n\n if (data.totalCnt === 0) return
    No product found.
    ;\n return (\n \n {/*
    \n
    */}\n
    \n \n\n {/* */}\n \n
    \n );\n}\n\nfunction Product({ product }) {\n const mainPhoto =\n product.productImages.length > 0\n ? product.productImages[0]\n : { imageUrl: \"/assets/product-empty.png\", alt: product.productName };\n const allPhotos = product.productImages || [];\n //const otherPhotos = product.productImages.length > 0 ? product.productImages.filter(x => !x.isPackage) : [];\n const packagePhotos =\n product.productImages.length > 0\n ? product.productImages.filter((x) => x.isPackage)\n : [];\n\n const popupImages = allPhotos.map((x) => x.imageUrl);\n\n const [currentTab, setCurrentTab] = React.useState(\"wheretobuy\");\n const [heroImage, setHeroImage] = React.useState(mainPhoto);\n\n // const youtubeSection = [];\n // if(product.youtubeSection && product.youtubeSection.length > 0){\n // product.youtubeSection.forEach(el => {\n // const video = JSON.parse(el.itemValue);\n // const videoId = utils.url.getYoutubeId(video.video);\n // const posterImage = video.posterImage || `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`;\n // youtubeSection.push({\n // alt : null,\n // imageUrl : posterImage,\n // isPackage : false, type : 'youtube',\n // video : video.video\n // });\n // });\n // }\n\n const [toggler, setToggler] = React.useState(false);\n //const [popupImages, setPopupImages] = React.useState();\n const [popupIndex, setPopupIndex] = React.useState(0);\n\n const [isMobile, setIsMobile] = React.useState(utils.site.isMobile());\n\n React.useEffect(() => {\n const resized = debounce(() => {\n setIsMobile(utils.site.isMobile());\n }, 1000);\n if (typeof window !== `undefined`) {\n window.addEventListener(\"resize\", resized);\n }\n\n return () => {\n if (typeof window !== `undefined`) {\n window.removeEventListener(\"resize\", resized);\n }\n };\n }, []);\n\n React.useLayoutEffect(() => {\n if (!utils.site.isNZ) {\n setTimeout(() => {\n bv.sendEvent(\n \"WhereToBuy\",\n \"WhereToBuyTab_ProductPage\",\n product.productCode\n );\n }, 1500);\n }\n\n // eslint-disable-next-line\n }, []);\n\n // BV\n const onShowReview = React.useCallback((e) => {\n //e.stopPropagation();\n showTab(\"reviews\", true);\n // eslint-disable-next-line\n }, []);\n\n const bv = useBV(product, {\n showReview: onShowReview,\n });\n\n function openPopupImage(imageUrl) {\n const inx = utils.array.findIndex(popupImages, (x) => x === imageUrl);\n setPopupIndex(inx >= 0 ? inx : 0);\n setToggler(!toggler);\n }\n\n function showTab(tab, forceToScroll = false) {\n if (tab === \"wheretobuy\" && !utils.site.isNZ) {\n console.log(\"__wheretobuy\");\n bv.sendEvent(\n \"WhereToBuy\",\n \"WhereToBuyTab_ProductPage\",\n product.productCode\n );\n }\n setCurrentTab(tab);\n scrollTo(\"tab-\" + tab, forceToScroll);\n }\n\n function scrollTo(selector, forceToScroll = false) {\n if (!forceToScroll && !isMobile) return;\n setTimeout(() => {\n const anchor = utils.ui.findElement(selector);\n if (anchor) utils.ui.scrollTo(anchor, 300);\n }, 200);\n }\n\n const slides = allPhotos.map((photo, index) =>\n photo.youtubeCheck ? (\n setHeroImage(photo)}\n >\n \n
    \n \n
    \n \n ) : (\n \n setHeroImage(photo)}\n >\n {/* {photo.alt} setHeroImage(photo)} /> */}\n \n )\n );\n\n var settings = {\n dots: false,\n infinite: slides.length > 2 ? true : false,\n speed: 500,\n autoplaySpeed: 3000,\n initialSlide: 1,\n //fade: true,\n autoplay: false,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n ],\n };\n\n // const displayTabs = [\n // true,\n // product.seeMoreSection && product.seeMoreSection.length > 0,\n // product.faqSection && product.faqSection.length > 0,\n // true,\n // product.whereToBuys && product.whereToBuys.length > 0,\n // ];\n\n // const tabs = [\n //
    showTab('details')}>\n // Details\n //
    ,\n //
    showTab('seemore')}>\n // {' '}\n // Recipes{' '}\n //
    ,\n //
    showTab('faqs')}>\n // FAQs\n //
    ,\n //
    showTab('reviews')}>\n // Reviews\n //
    ,\n //
    showTab('wheretobuy')}>\n // Where to buy\n //
    ,\n // ];\n\n // const tabContents = [\n //
    \n // \n //
    ,\n //
    \n // \n //
    ,\n //
    \n // \n //
    ,\n //
    \n //
    \n //
    ,\n //
    \n // {product.whereToBuys && product.whereToBuys.length > 0 ? :
    No Store
    }\n //
    ,\n // ];\n\n const displayTabs = [\n product.whereToBuys && product.whereToBuys.length > 0,\n true,\n true,\n product.seeMoreSection && product.seeMoreSection.length > 0,\n product.faqSection && product.faqSection.length > 0,\n ];\n\n const tabs = [\n showTab(\"wheretobuy\")}\n >\n Where to buy\n ,\n\n showTab(\"reviews\")}\n >\n Reviews\n ,\n\n showTab(\"details\")}\n >\n Details\n ,\n\n showTab(\"seemore\")}\n >\n {\" \"}\n Recipes{\" \"}\n ,\n showTab(\"faqs\")}\n >\n FAQs\n ,\n ];\n\n const tabContents = [\n
    \n {product.whereToBuys && product.whereToBuys.length > 0 ? (\n \n ) : (\n
    No Store
    \n )}\n
    ,\n\n
    \n
    \n ,\n\n
    \n \n
    ,\n\n
    \n \n
    ,\n\n
    \n \n
    ,\n ];\n\n const tabPanels = isMobile ? (\n
    \n {displayTabs[0] && (\n
    \n {tabs[0]} {tabContents[0]}\n
    \n )}\n {displayTabs[1] && (\n
    \n {tabs[1]} {tabContents[1]}\n
    \n )}\n {displayTabs[2] && (\n
    \n {tabs[2]} {tabContents[2]}\n
    \n )}\n {displayTabs[3] && (\n
    \n {tabs[3]} {tabContents[3]}\n
    \n )}\n {displayTabs[4] && (\n
    \n {tabs[4]} {tabContents[4]}\n
    \n )}\n
    \n ) : (\n
    \n
    \n {displayTabs[0] && tabs[0]}\n {displayTabs[1] && tabs[1]}\n {displayTabs[2] && tabs[2]}\n {displayTabs[3] && tabs[3]}\n {displayTabs[4] && tabs[4]}\n
    \n\n
    \n {displayTabs[0] && tabContents[0]}\n {displayTabs[1] && tabContents[1]}\n {displayTabs[2] && tabContents[2]}\n {displayTabs[3] && tabContents[3]}\n {displayTabs[4] && tabContents[4]}\n
    \n
    \n );\n\n const discoverMoreLinks = product.discoverMoreSection.map((x) =>\n JSON.parse(x.itemValue)\n );\n const barcodeCleaned = product.barcode\n ? product.barcode.replace(/-/g, \"\").replace(/ /g, \"\")\n : null;\n\n return (\n
    \n \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n\n {product.intro && (\n \n )}\n {barcodeCleaned && }\n {barcodeCleaned && (\n \n )}\n\n {heroImage && heroImage.imageUrl && (\n \n )}\n\n
    \n
    \n\n
    \n
    \n {/* */}\n\n {heroImage.youtubeCheck && heroImage.youtubeCheck === true ? (\n
    \n white bg\n
    \n {heroImage.youtubeUrl &&\n heroImage.youtubeUrl.toLowerCase().includes(\".m4v\") ? (\n \n \n \n ) : (\n \n )}\n
    \n
    \n
    \n ) : (\n //
    \n // \n //
    :\n openPopupImage(heroImage.imageUrl)}\n />\n )}\n\n {allPhotos.length > 1 && (\n
    \n \n {slides}\n {/* {\n youtubeSection.map((item, index) =>\n
    setHeroImage(item)}>\n
    \n
    \n
    \n \n
    \n
    \n )\n } */}\n
    \n
    \n )}\n
    \n
    \n {product.productName.indexOf(\"i-\") === 0 ? (\n

    \n \n {product.productName.toUpperCase().replace(\"I-\", \"i-\")}\n \n

    \n ) : (\n \n {product.productName}\n \n )}\n
    \n {product.priceText ? product.priceText : \"\"}\n
    \n
    \n Product code: {product.productCode}\n
    \n
    \n
    \n
    \n {product.productStatus === 98 /*Discontinued*/ && (\n
    \n This product is now discontinued.\n
    \n )}\n
    {product.intro}
    \n {discoverMoreLinks && (\n
    \n {discoverMoreLinks.map((link, index) => (\n
    \n \n {link.title}\n \n
    \n ))}\n
    \n )}\n\n
    \n
    \n {packagePhotos.map((photo, index) => (\n
    \n openPopupImage(photo.imageUrl)}\n />\n
    \n ))}\n
    \n\n {product.recipeBookletLink && (\n
    \n \n \n \n
    \n )}\n
    \n
    \n
    \n\n {tabPanels}\n\n \n
    \n
    \n
    \n \n );\n}\n\nfunction getMetaTag(product, mainPhoto) {\n const country = utils.site.isNZ ? \"New Zealand\" : \"Australia\";\n const siteName = env.siteName + \" \" + country;\n return {\n title: product.productName + \" | \" + siteName,\n description: product.metaDesc || product.intro,\n keywords: \"\",\n heroImageUrl:\n product.metaImage && product.metaImage !== \"\"\n ? utils.site.resourcePath(product.metaImage)\n : utils.site.resourcePath(mainPhoto.imageUrl),\n language: \"English\",\n country: country,\n siteName: siteName,\n url: utils.site.resourcePath(product.productUrl),\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n };\n}\n\nfunction RelatedProducts({ products }) {\n //console.log(products)\n if (products.length === 0) return null;\n return (\n
    \n

    Other products you might like

    \n \n
    \n );\n}\n\nfunction Stores({ stores }) {\n return (\n
      \n {stores.map((store) => (\n
    • \n
      \n \n
      {store.storeName}
      \n {store.buyOnline && (\n \n Buy online \n \n )}\n
      \n
    • \n ))}\n
    \n );\n}\n\n// function HowtoTab({ product }) {\n// const section = product.howToSection || [];\n// return ;\n// }\n\nfunction FaqTab({ product }) {\n const section = product.faqSection || [];\n return ;\n}\n\nfunction DetailsTab({ product }) {\n const section = product.detailSection || [];\n const hasWarranty = section.some(\n (x) => (x.itemValue || \"\").indexOf(\"WARRANTY\") >= 0\n );\n\n const techSection = product.specSection || [];\n\n return (\n \n \n {techSection.length > 0 && (\n
    \n

    TECH SPECS

    \n \n
    \n )}\n\n {product.useSparePartInstruction && (\n
    \n

    SPARE PARTS

    \n

    \n Spare Parts are available -{\" \"}\n \n Contact us\n {\" \"}\n for more information\n

    \n
    \n )}\n {!hasWarranty && product.warranty && (\n
    \n

    WARRANTY

    \n

    \n {utils.text.isNumeric(product.warranty)\n ? `Backed by a ${product.warranty} year warranty`\n : product.warranty.toLowerCase().indexOf(\"backed\") >= 0\n ? product.warranty\n : `Backed by a ${product.warranty.toLowerCase()} warranty`}\n

    \n
    \n )}\n {product.bookletLink && }\n {product.recipeBookletLink && (\n \n )}\n {product.barcode && (\n
    \n

    BARCODE

    \n

    {product.barcode}

    \n
    \n )}\n
    \n );\n}\n\n// function TechSpecTab({ product }) {\n// const section = product.specSection || [];\n// return (\n// \n// \n// {(product.barcode) &&

    BARCODE

    {product.barcode}

    }\n\n//
    \n// );\n// }\n\nfunction Booklet({ bookletLink }) {\n //const bookletTitle = utils.url.getFilename(bookletLink);\n return (\n
    \n {/*

    INSTRUCTION BOOKLET

    */}\n \n Download Instruction Booklet\n \n
    \n );\n}\n\nfunction RecipeBooklet({ recipeBookletLink }) {\n //const bookletTitle = utils.url.getFilename(recipeBookletLink);\n return (\n
    \n {/*

    INSTRUCTION BOOKLET

    */}\n \n Download Recipe Booklet\n \n
    \n );\n}\n// function TechSpecs(items) {\n// console.log(items)\n// const specs = items.filter(x => x.itemTypeCode === \"spec\").map(x => JSON.parse(x.itemValue));\n// console.log(specs)\n// const left = specs.filter(x => x.category !== 'R')\n// const right = specs.filter(x => x.category === 'R')\n// if (right.length === 0) {\n// // render all - men\n// const splitLefts = [], splitRights = []\n// left.forEach((x, index) => index % 2 === 0? splitLefts.push(x) : splitRights.push(x) )\n// return (\n//
    \n//
    \n// {splitLefts.map((x, index) => (
    {x.label}: {x.text}
    ))}\n//
    \n//
    \n// {splitRights.map((x, index) => (
    {x.label}: {x.text}
    ))}\n//
    \n//
    \n// )\n// } else {\n// // render left/right - women\n// return (\n//
    \n//
    \n// {left.map((x, index) => (
    {x.label}: {x.text}
    ))}\n//
    \n//
    \n// {right.map((x, index) => (
    {x.label}: {x.text}
    ))}\n//
    \n//
    \n// )\n// }\n// }\n\nfunction SeeMoreTab({ product }) {\n // const section = product.seeMoreSection || [];\n // const blogs = [],\n // instagrams = [];\n // const pre = [],\n // post = [];\n\n // let hasInstaOrBlog = false;\n // section.forEach((item) => {\n // if (item.itemTypeCode === \"link\") {\n // hasInstaOrBlog = true;\n // const link = JSON.parse(item.itemValue);\n // if (link.url && link.url.indexOf(\"instagram.com\") >= 0)\n // instagrams.push(item);\n // else if (link.linkType === \"blog\" || link.linkType === \"page\")\n // blogs.push(item);\n // } else if (hasInstaOrBlog) {\n // post.push(item);\n // } else {\n // pre.push(item);\n // }\n // });\n // return (\n // \n //
    \n // \n //
    \n //
    \n // \n //
    \n //
    \n // \n //
    \n //
    \n // \n //
    \n //
    \n // );\n const section = product.seeMoreSection || [];\n const blogs = [],\n instagrams = [];\n const pre = [],\n post = [],\n tiktoks = [];\n const empty = [0, 1, 2, 3, 4];\n\n let hasInstaOrBlog = false;\n section.forEach((item) => {\n let processed = false;\n if (item.itemTypeCode === \"link\") {\n const link = JSON.parse(item.itemValue);\n if (link.url && link.url.indexOf(\"instagram.com\") >= 0) {\n hasInstaOrBlog = true;\n processed = true;\n instagrams.push(item);\n } else if (\n link.linkType === \"blog\" ||\n link.linkType === \"page\" ||\n link.linkType === \"web\"\n ) {\n hasInstaOrBlog = true;\n processed = true;\n if (link.title !== \"\") {\n blogs.push(item);\n }\n } else if (link.linkType === \"tiktok\") {\n hasInstaOrBlog = true;\n processed = true;\n tiktoks.push(item);\n }\n }\n if (!processed) {\n if (hasInstaOrBlog) {\n post.push(item);\n } else {\n pre.push(item);\n }\n }\n });\n return (\n \n
    \n \n
    \n
    \n \n
    \n
    \n \n {empty.map((x) => (\n \n ))}\n
    \n
    \n \n {empty.map((x) => (\n \n ))}\n
    \n
    \n \n
    \n
    \n );\n}\n\n// function ReviewTab({ product }) {\n// return
    Coming...
    \n// }\n\nfunction ItemList({ section }) {\n //console.log(section)\n return (\n \n {section.map((item, index) => (\n \n ))}\n \n );\n}\n\nfunction ItemView({ item }) {\n //console.log(item, item.itemTypeCode, item.itemTypeCode === 'html')\n if (item.itemTypeCode === \"html\") {\n return
    ;\n }\n if (item.itemTypeCode === \"video\") {\n const video = JSON.parse(item.itemValue);\n\n if (video.video) {\n return (\n
    \n
    \n \n
    \n
    \n

    {video.title}

    \n
    \n
    \n
    \n );\n } else {\n return (\n
    \n
    \n

    {video.title}

    \n
    \n
    \n
    \n );\n }\n }\n if (item.itemTypeCode === \"link\") {\n // let link = JSON.parse(item.itemValue);\n // let title = link.title;\n // if (!link.title) {\n // title = (link.url || \"\").split(\"/\").pop();\n // }\n // if (link.url && link.url.indexOf(\"instagram.com\") >= 0) {\n // return (\n //
    \n // \n //
    \n // );\n // }\n // if (link.linkType === \"blog\" || link.linkType === \"page\") {\n // return ;\n // }\n // if (link.url && link.url.indexOf(\"http\") < 0) {\n // return (\n //
    \n // \n // {title}\n // \n //
    \n // );\n // }\n // return (\n //
    \n // \n // {title}\n // \n //
    \n // );\n let link = JSON.parse(item.itemValue);\n let title = link.title;\n if (!link.title) {\n title = (link.url || \"\").split(\"/\").pop();\n }\n if (\n link.linkType === \"instagram\" ||\n (link.url && link.url.indexOf(\"instagram.com\") >= 0)\n ) {\n return (\n
    \n {env.instagramUseFirst === \"embed\" && link.instagramEmbed ? (\n
    \n ) : link.url ? (\n \n ) : null}\n \n );\n }\n if (link.linkType === \"tiktok\") {\n return (\n
    \n \n
    \n );\n }\n if (link.linkType === \"blog\" || link.linkType === \"page\") {\n return ;\n }\n if (link.url && link.url.indexOf(\"http\") < 0) {\n return (\n
    \n \n {title}\n \n
    \n );\n }\n if (link.url && link.url.indexOf(\"http\") >= 0 && link.imageUrl) {\n return (\n \n );\n }\n return (\n
    \n \n {title}\n \n
    \n );\n }\n if (item.itemTypeCode === \"qa\") {\n const qa = JSON.parse(item.itemValue);\n return (\n
    \n
    {qa.question}
    \n
    \n \n );\n }\n if (item.itemTypeCode === \"spec\") {\n const spec = JSON.parse(item.itemValue);\n\n return (\n
    \n {spec.label}: {spec.text}\n
    \n );\n }\n return
    ;\n}\n\nfunction Empty() {\n return (\n
    \n
    \n
    \n );\n}\n\nfunction PageTile({ page }) {\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n return (\n
    \n \n
    \n
    \n
    \n
    {page.title}
    \n
    {page.tileDesc}
    \n
    VIEW RECIPE
    \n
    \n
    \n \n \n );\n}\n","import React from 'react';\nimport { useStore } from '../../store';\nimport FsLightbox from 'fslightbox-react';\n\nexport function CommonVideoPopup(props) {\n const { state } = useStore();\n\n const [toggler, setToggler] = React.useState(false);\n const [sources, setSources] = React.useState([]);\n const [popupIndex, setPopupIndex] = React.useState(0);\n\n const popup = state.popup;\n //console.log(popup, JSON.stringify((popup && popup.sources) || []), JSON.stringify(sources), (popup && popup.popupIndex), popupIndex)\n if (JSON.stringify((popup && popup.sources) || []) !== JSON.stringify(sources) ||\n ((popup && popup.popupIndex) || 0) !== popupIndex) {\n setSources(popup.sources);\n setPopupIndex(popup.popupIndex);\n setTimeout(() => { setToggler(!toggler) }, 10)\n } else {\n\n }\n //console.log(toggler, popupIndex, sources)\n return (\n
    \n \n // \n // ]}\n key={popupIndex}\n onOpen={(e) => {\n }}\n />\n
    \n );\n}","import React from 'react';\nimport { useRouter } from './components';\nimport { useHistoryStore } from './components';\nimport { useParallax } from './components';\nimport utils from './utils';\n\nexport function AppRouteChanged() {\n const { path } = useRouter();\n const parallax = useParallax();\n const history = useHistoryStore();\n \n React.useLayoutEffect(() => {\n console.log('route changed', path)\n if (typeof window !== `undefined`) {\n parallax.reset();\n const hash = window.location.hash;\n history.push({path: path})\n \n if (hash) { \n setTimeout(() => {\n const anchor = utils.ui.findElement(hash);\n if (anchor)\n utils.ui.scrollTo(anchor, 500);\n }, 500)\n } else {\n window.scrollTo(0, 0);\n }\n }\n // eslint-disable-next-line\n }, [path]);\n\n return null;\n}\n","import React, { lazy, Suspense } from 'react';\nimport { Loading } from \"../../components\";\nconst GourmetPro = lazy(() => import('./gourmetPro'));\n\nexport function GourmetProLoading(props) {\n return (\n
    \n }>\n \n \n
    \n );\n}","import React from 'react';\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { useRouter } from './components';\nimport { StoreProvider } from './store';\nimport { ViewPage } from './cms/pages/viewPage/viewPage';\nimport { EditPage } from './cms/pages/editPage/editPage';\nimport { TopHeader } from './layout/topHeader/topHeader';\nimport { Footer } from './layout/footer/footer';\nimport { BottomDock } from './layout/bottomDock/bottomDock';\nimport { ProductView } from './site/product/productView';\n// import { BlogView } from './site/blog/blogView';\nimport { AppVersionPage } from './components';\nimport { MediaQueryStatus } from './components';\nimport { CommonVideoPopup } from \"./layout/popup/commonVideoPopup\";\nimport { HelmetProvider } from 'react-helmet-async';\n//import { useScrollPosition } from '@n8tb1t/use-scroll-position';\nimport { AppRouteChanged } from './AppRouteChanged';\nimport { checkUpdate } from './lib/service-worker/swHelper';\nimport { GourmetProLoading } from \"./site/gourmetPro/gourmetProLoading\";\n\nfunction AppLayout(props) {\n const { pathname } = useRouter();\n\n React.useEffect(() => {\n const fetchData = async () => {\n await checkUpdate(); \n }\n fetchData();\n }, [pathname]);\n\n //const [scrolled, setScrolled] = useState(false)\n //const path = usePath();\n //const routeResult = useRoutes(routes);\n\n // const parallax = useParallax();\n // //console.log(path, routeResult);\n // const routeChanged = (path) => {\n // //console.log(path);\n // parallax.reset();\n // }\n\n // useScrollPosition(({ prevPos, currPos }) => {\n // //console.log(currPos.x)\n // //console.log(currPos.y);\n // if (currPos.y > 90) {\n // document.querySelector('body').classList.add('scrolled')\n // } else {\n // document.querySelector('body').classList.remove('scrolled')\n // }\n // //setScrolled(currPos.y > 90)\n // }, [], null, true)\n\n //const pageChanged = useCallback(path => routeChanged(path), [])\n //useLocationChange((path) => { routeChanged(path, history)})\n //useLocationChange(path => routeChanged(path))\n \n //const pathFiltered = (pathname || '').toLocaleLowerCase();\n let specialClassName = '';\n// if (pathFiltered.indexOf('/digital-sensor') >= 0) specialClassName = 'digital-sensor-page';\n// else if (pathFiltered === '/brilliance') specialClassName = 'brilliance-page';\n\n return (\n
    \n \n \n
    \n
    \n \n } />\n } />\n } />\n\n } /> \n {/* } /> */}\n \n \n \n \n \n \n \n \n
    \n {/* */}\n
    \n
    \n \n \n \n
    \n );\n}\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nlet serviceUpdateCheckerInterval = null;\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl, {updateViaCache: 'none'})\n .then(async registration => {\n // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration\n console.log('Service Worker registration successful with scope: ', registration.scope);\n if (registration && registration.waiting) {\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n }\n \n // Regular checking service worker\n if (serviceUpdateCheckerInterval) { try { clearInterval(serviceUpdateCheckerInterval) } catch (e) { } }\n serviceUpdateCheckerInterval = setInterval(() => {\n console.log('Checking SW updates...')\n registration.update();\n }, 1/*hour(s)*/ * 10/*minutes*/ * 60 * 1000);\n\n window.updateSW = function() {\n console.log('Checking SW updates... (force)')\n return registration.update();\n }\n \n // When the user asks to refresh the UI, we'll need to reload the window\n var preventDevToolsReloadLoop = false;\n \n const oldSw = (await navigator.serviceWorker.getRegistration())?.active?.state;\n console.log(oldSw, registration)\n navigator.serviceWorker.addEventListener('controllerchange', async function (ev) {\n const newSw = (await navigator.serviceWorker.getRegistration())?.active?.state;\n console.log('Service Worker controller change', ev)\n console.log(oldSw, newSw)\n // Ensure refresh is only called once.\n // This works around a bug in \"force update on reload\".\n if (preventDevToolsReloadLoop) return;\n \n\n if(oldSw === 'activated' && newSw === 'activating') {\n preventDevToolsReloadLoop = true;\n console.log('Reloading...')\n window.location.reload();\n }\n\n //window.location.reload();\n });\n\n registration.onupdatefound = () => {\n console.log('registration.onupdatefound', registration.installing)\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n console.log('Reloading... No SW found')\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport './polyfill';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './_scss/index.scss';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { forceUpdateFlagged, markUpdate } from './lib/service-worker/swHelper';\n\nReactDOM.render(, document.getElementById('root'));\n//ReactDOM.hydrate(, document.getElementById('root'));\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.register({\n onUpdate: (registration) => {\n console.log('updated', registration, forceUpdateFlagged());\n const update = true;//window.confirm('New Update Available. Do you want to update? (Refresh page)');\n if (update){\n if (!registration.waiting) {\n // Just to ensure registration.waiting is available before calling postMessage()\n return;\n }\n\n if (forceUpdateFlagged()) {\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n } else {\n // update when navigate to a different page.\n markUpdate();\n }\n \n }\n }\n});\n","export function enableForceUpdate() {\r\n localStorage.setItem('sw-enableForceUpdate', 'true');\r\n}\r\n\r\nexport function disableForceUpdate() {\r\n localStorage.setItem('sw-enableForceUpdate', 'false');\r\n}\r\n\r\nexport function forceUpdateFlagged() {\r\n return localStorage.getItem('sw-enableForceUpdate') === 'true';\r\n}\r\n\r\nexport function markUpdate() {\r\n localStorage.setItem('sw-markUpdate', 'true');\r\n}\r\n\r\nexport function unmarkUpdate() {\r\n localStorage.setItem('sw-markUpdate', 'false');\r\n}\r\n\r\nexport function hasUpdate() {\r\n return localStorage.getItem('sw-markUpdate') === 'true';\r\n}\r\n\r\nexport async function checkUpdate() {\r\n if (hasUpdate()){\r\n unmarkUpdate();\r\n const registration = await navigator.serviceWorker.getRegistration();\r\n console.log(registration);\r\n if (registration && registration.waiting) {\r\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n }\r\n }\r\n}\r\n\r\n// export function storeRegistration(registration) {\r\n// window.swRegistration = registration\r\n// }\r\n\r\n// export function getRegistration() {\r\n// return window.swRegistration\r\n// }\r\n\r\n// export function resetRegistration() {\r\n// const registration = getRegistration();\r\n// disableForceUpdate();\r\n// console.log('reset', registration)\r\n// if (registration && registration.waiting) {\r\n// registration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n// }\r\n// }","const defaultHolder = typeof window !== `undefined` ? window : {};\r\nconst storeName = '__j6_lazy_js'\r\n\r\nexport function loadJs(...scripts) {\r\n const promises = [];\r\n scripts.forEach((script) => promises.push(loadScript(script, defaultHolder)));\r\n return Promise.all(promises);\r\n}\r\n\r\nexport function loadedJs(url, holder = defaultHolder) {\r\n if (!holder[storeName]) return false;\r\n return holder[storeName][url] && holder[storeName][url].loaded\r\n}\r\n\r\nexport function loadScript(url, holder_, forceToReload = false) {\r\n const holder = holder_ || defaultHolder\r\n if (!holder[storeName]) holder[storeName] = {};\r\n\r\n return new Promise((resolve, reject) => {\r\n //resolve if already loaded\r\n if (!forceToReload && holder[storeName][url] && holder[storeName][url].loaded) {\r\n resolve({ script: url, loaded: true, networkLoaded: false , status: 'Already Loaded' });\r\n }\r\n else {\r\n // remove previous\r\n const existing = document.querySelector('script[src=\"' + url +'\"]')\r\n if (existing) existing.remove();\r\n\r\n // load script\r\n let script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = url;\r\n script.onload = () => {\r\n holder[storeName][url] = { loaded: true };\r\n resolve({ script: url, loaded: true, networkLoaded: true, status: 'Loaded' });\r\n };\r\n script.onerror = (error) => resolve({ script: url, loaded: false, status: 'Load failed' });\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n });\r\n}","import { loadJs, loadedJs, loadScript } from './loadJs';\r\n\r\nexport { loadJs, loadedJs, loadScript };","import React from 'react';\n//import utils from '../../utils';\nimport env from '../../env';\nimport { loadJs, loadedJs } from '../../lib/net-loader';\n\nexport function useBV(prd, { showReview }) {\n const [product] = React.useState(prd);\n\n React.useEffect(() => {\n // make sure whether the js has been loaded for every product page loading.\n console.log('[useBV]--useEffect, js loading')\n const url = `https://apps.bazaarvoice.com/deployments/${env.bvClientId}/${env.bvSiteId}/${env.bvEnv}/${env.bvLocale}/bv.js`\n if (!loadedJs(url)) {\n loadJs(url).then(data => {\n console.log('[BV] script loaded ', data);\n })\n }\n }, [product])\n\n React.useEffect(() => {\n console.log('[useBV]--useEffect')\n\n const reviewClicked = function (e) {\n console.log('[BV] show review panel')\n showReview(e);\n }\n\n const bvCallback = (BV) => {\n console.log('[BV] callback loaded');\n\n if (BV && BV.reviews) {\n BV.reviews.on('show', reviewClicked);\n }\n\n // BV.rating_summary.on('show', function () {\n // console.log('rating_summary show')\n // });\n }\n if (typeof window !== `undefined`) {\n if (window.BV) {\n bvCallback(window.BV)\n } else {\n window.bvCallback = bvCallback\n }\n }\n return () => {\n console.log('[BV] clear events bound')\n if (typeof window !== `undefined` && window.BV.reviews) {\n window.BV.reviews.off('show', reviewClicked);\n window.bvCallback = null\n }\n }\n }, [showReview])\n\n //https://knowledge.bazaarvoice.com/wp-content/conversations/en_US/Collect/bvpixel.html#events-captured-by-bv-pixel\n const sendEvent = (type, label, value, options = {}) => {\n console.log('[BV] event', type, label, value)\n if (typeof window !== `undefined`) {\n if (!window.BV) { console.error('No BV object'); return; }\n const BV = window.BV\n BV.pixel.trackConversion({\n ...{\n \"type\": type,\n \"label\": label,\n \"value\": value\n }, ...options\n });\n }\n }\n\n const sendTransactionEvent = (currency, orderId, total, items, options = {}) => {\n console.log('[BV] transaction event', currency, orderId, total, items)\n if (typeof window !== `undefined`) {\n if (!window.BV) { console.error('No BV object'); return; }\n const BV = window.BV\n BV.pixel.trackTransaction({\n ...{\n \"currency\": currency,\n \"orderId\": orderId,\n \"total\": total,\n \"items\": items\n }, ...options\n });\n }\n }\n\n return { sendEvent, sendTransactionEvent }\n}","// https://www.pluralsight.com/guides/re-render-react-component-on-window-resize\r\nexport function debounce(fn, ms) {\r\n let timer\r\n return _ => {\r\n clearTimeout(timer)\r\n timer = setTimeout(_ => {\r\n timer = null\r\n fn.apply(this, arguments)\r\n }, ms)\r\n };\r\n}","import variables from './cssInJs/variables';\n\nconst cssEmotion = {\n breakpointNames: variables.breakpointNames,\n breakpoints: variables.breakpoints\n}\n\nexport default {\n cssEmotion\n}","const config = {\n isProd: process.env.NODE_ENV === \"production\",\n locale: getLocale(),\n country: getCountry(),\n siteName: process.env.REACT_APP_SITENAME,\n siteCode: process.env.REACT_APP_SITECODE,\n apiBase: process.env.REACT_APP_API_ENDPOINT,\n resourceBase: process.env.REACT_APP_RESOURCE_BASEURL,\n baseOrigin: getBaseUrl(),\n cmsEndpoint: process.env.REACT_APP_CMS_ENDPOINT,\n ver: process.env.REACT_APP_VERSION,\n updateDate: process.env.REACT_APP_UPDATED_AT,\n\n bvClientId: process.env.REACT_APP_BAZZAR_CLIENT_ID,\n bvSiteId: process.env.REACT_APP_BAZZAR_SITE_ID,\n bvEnv: process.env.REACT_APP_BAZZAR_ENV,\n bvLocale: getLocale() === \"nz\" ? \"en_NZ\" : \"en_AU\",\n\n instagramClientAccessToken: process.env.REACT_APP_INSTAGRAM_CLIENT_ACCESS_TOKEN,\n};\n\nfunction getLocale() {\n return process.env.REACT_APP_COUNTRY_LOCALE || getCountry();\n}\n\nfunction getCountry() {\n if (typeof window !== `undefined`) {\n if (window.location.hostname.toLowerCase().indexOf(\".nz\") >= 0) return \"nz\";\n if (window.location.hostname.toLowerCase().indexOf(\"-nz\") >= 0) return \"nz\";\n if (window.location.search === \"?nz=true\") return \"nz\";\n }\n return \"au\";\n}\n\nfunction getBaseUrl() {\n if (typeof window !== `undefined`) {\n return window.location.origin;\n }\n return process.env.GATSBY_BASEURL;\n}\n\nconsole.log(process.env, config);\nexport default {\n ...config,\n};\n","import { css } from '@emotion/core';\nimport { variables } from '../../cssInJs';\n\nconst linkText = {\n color: variables.fontColor,\n fontSize: '0.8rem',\n padding: '0 20px',\n '&:hover': {\n color: variables.fontColor,\n }\n}\n\nexport default {\n tile: {\n padding: 7,\n flex: '1 0 auto',\n fontFamily: variables.familyHeader,\n //textAlign: 'left'\n //height: '100%'\n },\n tileLink: {\n background: '#fff',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n padding: 5,\n '&:hover': {\n textDecoration: 'none',\n background: '#f3f3f3'\n }\n },\n prdImage: {\n padding: '0 5px',\n maxWidth: '190px',\n margin: 'auto',\n width: '100%',\n },\n bg: {\n height: 0,\n paddingBottom: '100%',\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n },\n name: css(linkText, {\n fontWeight: 'bold',\n }),\n price: css(linkText, {\n \n marginTop: 'auto',\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport utils from '../../utils';\nimport { SiteLink } from '../../components';\n\nexport function Tile({ product, style, useFullHeight }) {\n const imageUrl = product.productThumbnail ? utils.site.resourcePath(product.productThumbnail) : '/assets/product-empty.png';\n //console.log(imageUrl)\n const productUrl = product.productUrl ? product.productUrl : `/product/${product.productCode}`;\n return (\n
    \n \n
    \n
    \n
    \n
    \n {product.productName}\n {/*
    \n
    \n
    */}\n
    \n\n
    \n {product.priceText ? product.priceText : ''}\n
    \n\n
    \n
    \n )\n}"],"sourceRoot":""}