{"version":3,"sources":["../node_modules/pdfjs-dist/build sync","site/gallery/config.js","lib/polyfill-ie/index.js","components/notFound/notFound.js","env.js","lib/app-version/index.js","components/form/buttons/button.js","lib/ui-error/errorMessage.js","lib/ui-error/errorPopup.js","lib/icons-svg/icons/NarrowRight.js","cssInJs/variables.js","lib/auth/services/authHelper.js","config.js","lib/icons-svg/icons/Loading--circle.js","lib/ui-loading-v2/sectionLoading.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","lib/css-emotion/breakpoints.js","lib/css-emotion/mixin.js","site/siteUtils.js","utils/index.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/net-loader/loadJs.js","lib/ui-parallax/index.js","lib/router/useRouter.js","lib/store/reducers.js","lib/store/storeProvider.js","lib/router/useHistoryStore.js","lib/router/handleLink.js","lib/router/siteLink.js","lib/instagram-feed/feedStyle.js","lib/instagram-feed/feed.js","lib/utils-core/debounce.js","lib/youtube/iframeApi.js","lib/youtube/youtubeEmbedPopup.js","site/_cmsItems/cmsUtils.js","site/_cmsItems/panel/view/panel.js","site/_cmsItems/bigPanel/render.js","site/_cmsItems/code-instagram/render.js","site/_offline/index.js","lib/form/formModelHelper.js","lib/form/formBuilder.js","lib/form/validatorHelper.js","lib/form/validators/required.js","lib/form/validators/email.js","lib/form/validators/date.js","lib/form/validators/length.js","lib/form/validators.js","lib/form/formRenderHelper.js","lib/form/components/ValidationAlert.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/TextareaInput.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/tracking/gtm.js","site/button/buttonStyle.js","site/button/formButton.js","site/_cmsItems/code-subscribe/subscribe.js","site/_cmsItems/code-subscribe/subscribeFormModel.js","site/_cmsItems/code-subscribe/render.js","site/_cmsItems/html/view/renderHtml.js","site/_cmsItems/html/view/html.js","site/_cmsItems/html/render.js","site/bannerSize/bannerSize.js","site/_cmsItems/imagePanel/view/imagePanelStyle.js","site/useParallax/useParallax.js","site/_cmsItems/imagePanel/view/imagePanel.js","site/_cmsItems/imagePanel/render.js","site/_cmsItems/memberLogin/view/memberLoginStyle.js","auth/services/authHelper.js","lib/net-api/fetch.js","auth/services/useAuth.js","auth/controls/loginStatus/statusStyle.js","site/_cmsItems/memberLogin/view/memberLogin.js","site/_cmsItems/memberLogin/render.js","site/tileList/tileList.js","site/tileList/tileListStyle.js","site/_cmsItems/pageTiles/view/pageTile/pageTile.js","site/_cmsItems/pageTiles/view/pageTile/pageTileStyle.js","site/_cmsItems/pageTiles/view/pageTiles.js","site/_cmsItems/pageTiles/render.js","site/_cmsItems/panel/render.js","site/gallery/galleryTiles.js","site/gallery/galleryStyle.js","site/portal/portal.js","site/gallery/gallery.js","site/_cmsItems/photoGallery/view/photoGallery.js","site/_cmsItems/photoGallery/render.js","site/_cmsItems/productPageTiles/view/productPageTilesStyle.js","site/ecm/productList/productTileStyle.js","site/ecm/product/productViewStyle.js","site/ecm/product/addToCart.js","site/ecm/productList/productTile.js","site/_cmsItems/productPageTiles/view/productPageTiles.js","site/_cmsItems/productPageTiles/render.js","site/shareButtons/shareButtons.js","site/shareButtons/shareButtonStyle.js","site/_cmsItems/sharingIcons/view/sharingIcons.js","site/_cmsItems/sharingIcons/render.js","cms/items/youtubeNew/view.js","site/_cmsItems/videoPanel/view/videoPanel.js","site/_cmsItems/videoPanel/view/videoPanelStyle.js","cms/utils/cmsUtils.js","cms/items/bannerPanel/view.js","site/_cmsItems/videoPanel/render.js","site/_cmsItems/wholesaleRegister/view/wholesaleRegisterStyle.js","site/_cmsItems/wholesaleRegister/view/wholesaleRegisterModel.js","site/_cmsItems/wholesaleRegister/view/wholesaleRegister.js","site/_cmsItems/wholesaleRegister/render.js","site/_cmsItems/items-generated.js","cms/items/bannerItem/view.js","cms/items/bannerItem/style.js","cms/items/panel/view.js","cms/items/html/view.js","cms/items/imagePanel/view.js","components/tiles/bsyc/style.js","components/tiles/bsyc/view.js","components/tiles/small/style.js","components/tiles/small/view.js","components/tiles/third/style.js","components/tiles/third/view.js","components/tiles/fourth/style.js","components/tiles/fourth/view.js","components/tiles/fifth/style.js","components/tiles/fifth/view.js","cms/items/singleBanner/view.js","cms/items/contactForm/contactForm.js","cms/items/contactForm/contactFormModel.js","cms/items/contactForm/view.js","lib/youtube/youtubeBanner--mobilePopup.js","cms/items/VideoPanel/view.js","site/searchResult/searchResult.js","components/TextWithJavaScript/view.js","components/jotformIframe/view.js","components/jotformLightbox/style.js","components/jotformLightbox/view.js","cms/items/code/view.js","cms/items/blogPosts/style.js","cms/items/blogPosts/view.js","cms/items/blogPostTitle/view.js","cms/items/videoHolder/view.js","cms/items/videoItem/view.js","cms/items/multiColumnPanel/view.js","cms/items/expandableHtml/view.js","components/photoGallery/style.js","components/photoGallery/view.js","components/testimonial/testimonialPanel/style.js","components/testimonial/testimonialItem/style.js","components/testimonial/testimonialItem/view.js","components/testimonial/testimonialPanel/view.js","components/expandablePanel/style.js","components/expandablePanel/view.js","components/SliderAward/SliderAwardPanel/style.js","components/SliderAward/SliderAwardPanel/view.js","site/ecm/productList/productItems.js","site/ecm/productList/categoryListModel.js","site/ecm/cart/cartStyle.js","site/ecm/cartStep/stepStyle.js","site/ecm/cartStep/stepNav.js","site/ecm/cartOrderItems/orderItemStyle.js","site/ecm/cartSummary/summaryStyle.js","site/ecm/cartSummary/summary.js","site/ecm/cartOrderItems/orderItems.js","site/ecm/cartOrderItems/orderItemFormData.js","site/ecm/cartShipping/shipping.js","site/ecm/cartPayment/payStyle.js","site/ecm/cartPayment/pay.js","site/ecm/cartPayment/payStripe.js","site/ecm/cart/cart.js","site/ecm/cart/useStep.js","site/ecm/cartShipping/shippingFormData.js","cms/items/ecm/view.js","components/RotatingReview/RotatingReviewPanel/style.js","components/RotatingReview/RotatingReviewPanel/view.js","components/PhotoSlide/PhotoSlide/style.js","components/PhotoSlide/PhotoSlide/view.js","cms/items/item.js","cms/pages/viewPage/viewPage.js","lib/instagram-useInstagram/index.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/searchButton/search-black.svg","layout/searchButton/searchButtonStyle.js","layout/searchButton/searchButton.js","layout/cartButton/cartButtonStyle.js","layout/cartButton/cartButton.js","layout/topHeader/topHeader.js","layout/bottomDock/bottomDock.js","layout/popup/commonVideoPopup.js","AppRouteChanged.js","cms/pages/partials/viewPartial.js","site/ecm/product/enquiryFormModel.js","cms/pages/partials/productPagePartial.js","site/ecm/product/productView.js","site/ecm/product/enquiryFormView.js","site/ecm/orderDetails/orderDetailsStyle.js","site/ecm/orderDetails/orderDetails.js","site/wholeSale/dashboard/style.js","site/wholeSale/register/wholesaleRegisterModel.js","site/wholeSale/register/wholesaleRegisterStyle.js","site/wholeSale/register/view.js","site/wholeSale/dashboard/view.js","site/wholeSale/orderView/style.js","site/wholeSale/orderView/view.js","auth/controls/forgotPassword/forgotPassword.js","auth/controls/resetPassword/resetPassword.js","App.js","serviceWorker.js","index.js","site/tileList/config.js"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","module","exports","id","settings","breakpointNames","numOfTilesPerBreakpoints","marginLR","marginTB","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","NotFound","props","debugInfo","className","href","onClick","preventDefault","window","location","reload","refreshPage","history","back","goBack","style","marginTop","color","fontSize","pageUrl","loadFrom","config","isProd","process","locale","REACT_APP_COUNTRY_LOCALE","hostname","toLowerCase","indexOf","search","getCountry","siteName","titleSuffix","siteCode","apiBase","resourceBase","baseOrigin","origin","GATSBY_BASEURL","getBaseUrl","cmsEndpoint","ver","updateDate","stripeKey","reCaptchaSiteKey","jamDiscountProducts","pasteDiscountProducts","relishDiscountProducts","marmaladeDiscountProducts","syrupDiscountProducts","teaDiscountProducts","console","log","getDevCartId","localStorage","getItem","setDevCartId","cartId","setItem","AppVersion","React","useState","checkStatus","setCheckStatus","env","useEffect","updateSW","then","timer","setTimeout","clearTimeout","button","type","AppVersionPage","margin","width","Button","status","children","btnStyle","buttonStyle","disabled","role","aria-hidden","ErrorMessage","errors","summaryMessage","length","message","Array","isArray","map","error","index","key","ErrorPopup","title","messages","push","css","position","padding","maxWidth","maxHeight","background","top","left","transform","zIndex","inx","dangerouslySetInnerHTML","__html","SvgNarrowRight","colors","colorGreen","colorLightGreen","colorRed","colorLightRed","colorLightGrey","colorYellow","variables","familyBase","familyHeader","primaryColor","fontColor","bgColor","breakpoints","getIdToken","Promise","reject","unsubscribe","firebase","auth","onAuthStateChanged","user","idToken","cssEmotion","firebaseSettings","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","apiNetJwt","options","a","token","headers","iconColors","siteConfig","primary","secondary","SvgLoading","height","viewBox","preserveAspectRatio","cx","cy","r","fill","stroke","strokeWidth","attributeName","repeatCount","dur","values","keyTimes","keySplines","calcMode","begin","Loading","undefined","loaded","setLoaded","loading","minHeight","display","justifyContent","alignItems","opacity","transition","isExternalLink","link","getLinkFromElement","linkEl","getAttribute","getLinkInfo","currentPath","pathname","linkFiltered","replace","linkLower","isExternal","isHash","isTel","isMailTo","url","path","i","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","getFolderPath","parentDepth","slice","join","toQueryString","params","Object","encodeURIComponent","getYoutubeId","getSlug","text","getWebUrl","schema","getErrors","result","forEach","err","errorMessage","getErrorMessage","convertToObject","array","reduce","obj","item","convertToKeyValues","value","moveItem","list","fromIndex","toIndex","splice","removed","removeItem","insertItem","find","fn","findIndex","contains","distinct","comparer","filtered","x","sum","total","equal","list1","list2","found","j","caseInsensitiveCompare","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","parse","isValidDate","d","bgUrl","imageUrl","encodeURI","decodeURI","bgUrlStyle","screenWidth","innerWidth","document","documentElement","clientWidth","body","screenHeight","innerHeight","clientHeight","outerWidth","offsetWidth","outerHeight","offsetHeight","hasClass","classList","match","RegExp","addClass","add","removeClass","remove","reg","toggleClass","scrollTo","selector","duration","delay","findElement","offset","elementOffset","gsap","to","ease","querySelectorOrNull","querySelector","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElementInViewport","bottom","right","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isEmpty","isNumeric","num","capitalize","expression","charAt","toUpperCase","toFieldName","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","parts","toString","registerPlugin","ScrollToPlugin","formatNumber","Math","round","toTelephoneNumber","like","shortId","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","getImageSetPath","setId","info","getPathDetails","baseFolder","setIds","lastFolder","classNames","form","ui","money","random","object","media","mq","facepaint","bp","mqMin","mqMax","mediaQuery","matchMedia","isMin","isMax","overlay","content","isMobile","md","resourcePath","utils","fullUrl","isNZ","coreUtils","site","useApi","response","setResponse","setErrors","setStatus","request","setRequest","fetch","res","ok","json","statusText","JSON","fetchData","hasErrors","containsErrorMessage","msg","finding","some","addErrors","errs","done","send","sendRaw","httpOptionFn","args","setResult","reset","usePost","formDataFn","data","method","post","stringify","sending","sendFormData","useGet","get","MediaQueryStatus","MetaTag","seoData","assign","description","name","keywords","language","country","faceBookDomainVerifi","heroImageUrl","rel","canonical","alternates","hreflang","MAX","MIN","getScrollProgress","scroll","scrollY","progress","boundsTop","viewport","bounds","setClass","pr","range","prVal","min","max","y","removeTransform","getScreenSize","defaultHolder","storeName","loadJs","promises","scripts","script","loadScript","all","holder_","forceToReload","holder","networkLoaded","existing","createElement","src","onload","onerror","getElementsByTagName","appendChild","defaultSettings","cutoffPadding","speed","ParallaxData","screenSize","panels","imageRatio","panelHeight","elements","timeoutId","useParallax","handleScroll","element","au","calculated","fromTop","toTop","backgroundPositionY","init","useLayoutEffect","addEventListener","removeEventListener","cnt","panel","querySelectorAll","autoPanelHeight","parseFloat","shadowHeight","shadowWidth","baseHeight","backgroundSize","useRouter","useParams","useLocation","useHistory","useRouteMatch","useMemo","navigate","Redirect","hash","query","queryString","initialState","page","menu","popup","reducer","state","action","payload","StoreContext","createContext","StoreProvider","useReducer","dispatch","Provider","useStore","useContext","useHistoryStore","loc","setHistory","last","handleElementLink","externalHandler","linkInfo","handled","SiteLink","target","other","goToLink","stopPropagation","tiles","marginLeft","marginRight","flexWrap","tile","flexBasis","cursor","tileImage","mixin","backgroundColor","tileIcon","InstagramFeed","Feeds","posts","numOfPost","xs","sm","lg","xl","xxl","displayingPosts","Feed","alt","debounce","ms","_","apply","arguments","loadApi","onApiReady","YT","tag","onYouTubeIframeAPIReady","firstScriptTag","insertBefore","thumbnailMax","videoId","getYoutubeCode","YoutubeEmbedPopup","posterUrl","yt","posterImageUrl","popupIndex","setPopupIndex","backgroundImage","sources","defaultVal","payloads","hasItemInPageData","pageData","matchFn","sections","hasItemInItems","items","getCodeJson","hasItemInPageDataByItemTypeCode","itemTypeCode","Panel","subItems","cmsOption","panelType","cmsUtils","backgroundTile","bgTheme","cssClass","anchorName","subItemsElts","subItem","Item","itemId","data-cms-item-id","isCmsEdit","renderRule","itemElt","navigator","onLine","findControl","controlNameOrIndex","root","controls","findControlTraverse","controlName","control","getValue","getValueTraverse","helperFns","getFilesTraverse","getKeyValueTraverse","keyValue","controlType","customValueFn","files","findIndexById","abstractControl","controlObject","validators","controlOptions","touched","incomplete","findValidator","controlArray","ctrl","disableValidators","formModelHelper","parent","hasRequiredValidator","getNameForValidator","label","createValidator","opt","validate","defaultOpt","continueToValidate","getValidatorOptions","val","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","Required","validateOpt","triggeredByChange","Email","PastDate","PastDateNullAllowed","Length","validateControl","getLabel","formOption","requiredMark","getLabelAsString","ValidationAlert","TextInput","handleChange","helpText","attrs","forceUsePlaceholder","fieldId","usePlaceholder","fieldLabel","placeHolder","valueStr","prependText","htmlFor","onChange","onKeyDown","onBlur","autoComplete","placeholder","checked","optionValue","includes","DateSeparateInput","thisYear","year","setYear","month","setMonth","day","setDay","handleChangeInner","persist","months","selectStyle","fromYear","recentYear","handleChangeDay","handleChangeMonth","m","handleChangeYear","FileInput","Components","RadioListInput","helpLabelText","option","inline","TextareaInput","textAreaRef","useRef","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","disableAutoHeight","current","h","scrollHeight","rows","ref","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","formValidate","model","controlRenderer","validateForm","getFiles","hasGTM","dataLayer","pageView","pageTitle","pageOpt","event","sendEvent","eventName","sendGAEvent","category","buttonColor","baseStyle","overflow","appearance","darken","textDecoration","buttonBg","borderRadius","buttonTxt","smallStyle","fontWeight","letterSpacing","FormButton","overridingStyle","ss","Subscribe","fb","email","sendingStatus","setSendingStatus","gtm","contactEmail","render","colorBlue","textAlign","node","attribs","attributesToProps","replaceImg","class","domToReact","replaceButton","_embedDataList","codeType","renderHtml","_cmsOption","replaceEmbedCode","html","cmsViewMode","embedDataList","Html","htmlBlock","data-cms-html","processed","aLink","_href","targetId","targetElt","wrapper","nextElt","nextElementSibling","insertAdjacentElement","setAttribute","handleClick","mqBanner","bannerThin","bannerStandard","getImageBannerStyle","heightSet","setName","bannerSize","bannerHeight","backgroundPositionX","photoCredit","transformOrigin","panelRef","_settings","paddingHeightRatio","stretchToFit","actionRange","cutTop","cutBottom","getSettings","onScroll","bgHeight","bgWidth","cutTopPx","cutBottomPx","onResize","ImagePanel","photoCreditUrl","hideTop","hideBottom","pageOptions","imagePath","cssClass2","parallaxSetting","member_login","logged_in_text","getFirebaseUser","fetchPost","signal","errMessages","initializeApp","authContext","ProvideAuth","queryStatus","memberInfo","authData","setAuthData","setUser","isResolved","currentFirebaseUser","loggedIn","signin","password","signInWithEmailAndPassword","_result","uid","signup","phone","companyName","branchSiteName","createUserWithEmailAndPassword","displayName","emailVerified","signupForWholeSale","firstName","lastName","businessPhone","mobilePhone","businessName","abn","acn","businessCategory","estimatedSpend","billingInfo","shippingInfo","useSameAddress","signout","signOut","sendPasswordResetEmail","confirmPasswordReset","setMemberInfo","useProvideAuth","useAuth","lighten","MemberLogin","border","LoginView","setLoading","pending","setPending","checkAuth","setCheckAuth","setError","formValues","setFormValues","router","catch","LoginForm","submit","results","userFirstName","authCheck","cartInfo","handChange","elName","elValue","onSubmit","required","autoFocus","TileList","useSlider","slickSettings","infinite","tilesSlider","getTileListStyle","marginBottom","PageTile","tileLink","disableLink","desc","tileDesc","paddingLeft","paddingRight","paddingTop","paddingBottom","flexGrow","flexShrink","flexDirection","rgba","tileSlider","tileBg","backgroundPosition","backgroundRepeat","tileContent","lineHeight","textTransform","WebkitLineClamp","WebkitBoxOrient","getTileStyle","PageTiles","pagesSerialized","getPages","GalleryTiles","images","openPopupImage","img","ImageTile","image","getImageTileStyle","thumbnailUrl","Portal","mount","getElementById","removeChild","createPortal","set","Gallery","toggler","setToggler","popupImages","galleryImages","caption","Fragment","sourceIndex","PhotoGallery","noResultText","product__page__tiles","product__page__tiles__container","numberOfTiles","widthPercent","tileListStyle","categoryList","tileStyle","container","boxShadow","prdImage","bg","des","flex","price","new","sale","portal__background","portal__popupcontainer","related__product__head","svg","related__product__img","related__product__title","related__product__contents","related__product__desc","p","fontFamily","product__banner","li","heroImageContainer","heroImage","productPageCol","productFavorite","productBreadCrumbs","listStyle","productViewImageBg","productViewImages","productView__images__container","productViewImage","outline","productViewShortDes","productViewTitle","product__view__shot__des","addToCartBtn","priceText","socialMedia","attributesRow","attrContainer","borderColor","desktopMobile","quoteContainer","enquiryFormContainer","newOptionRow","newOptionStyleContainer","newOptionStyleItem","productViewPanel","productView__relatedProducts","variant__enquire__container","variant__enquire__item","variant__enquire__title","variant__enquire__options","variant__enquire__option","product__enquiry__form__item","product__enquiry__form__item__1","pdf__viewer__bg","pdf__viewer__view","pdf__viewer__view__bar","pdf__viewer__view__contetns","overflowX","overflowY","pdf__viewer__view__contetns__des","pdf__viewer__view__page","pdf__viewer__view__index","AddToCart","product","setVariantOptions","setEnquiryFormQty","variantAttributes","quantity","variantOptions","variantOptionArray","attr","variants","dyName","optionsSelected","currentSelection","availableOptions","from","Set","getAvailableOptionValues","optionsInVariant","currentControlName","optionSelected","optionInVariant","matchVariantOptions","newVariantAttribute","getFormModel","formVal","_variantOptions","_item","setPriceItem","getProductItem","attributes","priceItem","checkGoToCartBtn","setCheckGoToCartBtn","elss","_price","checkVariant","_priceResult","checkMember","wholesalePriceIncTax","priceIncTax","_quantity","parseInt","productName","productId","addToCart","_cartId","totalQuantity","productStatus","ProductTile","openClikcPopup","openProductViewPopup","setOpenProductViewPopup","productUrl","productSlug","ProductViewPopup","closeProductViewPopupF","TileContetns","saleCheck","checkSale","productCategories","categoryName","shortDesc","productStatusText","priceTextOveriding","checkNew","ProductPageTiles","selectedPages","pages","setPages","searchPedding","setSearchPedding","abortController","AbortController","abort","ProductPageTilesWithSlider","dots","autoplaySpeed","fade","autoplay","slidesToShow","slidesToScroll","responsive","breakpoint","ShareButtons","shareUrl","topLabel","shareButtons","shareButtonTitle","shareButton","FacebookShareButton","FacebookIcon","size","WhatsappShareButton","WhatsappIcon","EmailShareButton","subject","EmailIcon","SharingIcons","YoutubeNew","youtubeBannerRef","playerStatus","setPlayerStatus","playerSize","setPlayerSize","setYtPlayer","countPlayedRef","video","videoLinkOrId","playerId","mobileImageUrl","canPlayVideo","loadVideo","sizeCalculator","containerSize","w","getSize","player","Player","events","onStateChange","PlayerState","ENDED","countPlayed","playVideo","onReady","mute","onError","resized","canPlay","enablejsapi","loop","showinfo","modestbranding","allowfullscreen","wmode","allow","frameBorder","VideoPanel","videoCode","overlayColor","overlayOpacity","posterFrameUrl","single__banner__bg","getStyle","BannerPanel","slides","wholesale_register_form","h_3","countryList","businessCategories","estimatedSpendList","address","addressFirstName","addressLastName","addressEmail","city","postalCode","addressS","WholesaleRegister","billingAddress","shippingAddress","checkConditions","Address","addressModel","bigPanel","code_instagram","code_subscribe","imagePanel","memberLogin","pageTiles","photoGallery","productPageTiles","sharingIcons","videoPanel","BannerItem","smallCaptionTop","bigCaptionMiddle","smallCaptionBottom","captionButton","linkUrl","vAlign","BannerItemContetns","block","embed","ReactDOM","replaceEmbedCodes","buttons","restructureButton","span","innerHTML","data-pxh","pageTiles__big","pageTile__big","pageTile__big__content","pageTile__big__wrapper","pageTile__big__bg","pageTile__big__title","pageTile__big__middle__text","pageTile__big__button","PageTilesBsyc","pageTileElts","Tile","idx","pageTiles__small","pageTile__small","pageTile__small__wrapper","pageTile__small__content","pageTile__small__title","pageTile__small__bg","pageTile__small__des","pageTile__small__button","PageTilesSmall","pageTile__third","order","pageTile__third__content","borderTopColor","tile__flip__wrapper__third","pageTile__third__bg","pageTile__third__bg2","pageTile__third__bg2__inner","pageTile__third__content__details","PageTilesThird","colorTheme","sliderImgs","bottomImageUrl","unshift","mobile","data-aos","pageTiles__fourth","pageTile__fourth","pageTile__fourth__wrapper","pageTile__fourth__content","pageTile__fourth__title","pageTile__fourth__bg","pageTile__fourth__des","pageTile__fourth__button","PageTilesFourth","pageTile__tile","tile__content","tile__flip__wrapper","tile__bg","tile__bg2","tile__details","PageTilesFifth","SingleBanner","alignV","Contact","emailReceiver","fileAttachment","mailchimpApiKey","mailchimpAudienceKey","enquiry","attachments","mailChimpError","setMailChimpError","mailChimpErrorMemo","MailChimpError","grecaptcha","ready","execute","grecaptchaToken","formData","FormData","append","file","uploadFile","ContactForm","YoutubeBannerMobilePopup","ytPlayer","muted","setMuted","popupOpened","setPopupOpened","checkInterTime","checkYoutubeIframeApJabaScript","setInterval","clearInterval","pauseVideo","unMute","channel","isOpen","onClose","SearchResult","keyword","q","products","ProductList","PageList","productCode","searchHighlight","TextWithJavScript","javaScriptCode","substring","nonjavaScriptCode","javaScriptTopCode","javaScriptInsideCode","_src","async","defer","_functionName","functionName","JotformIframe","existingScript","jotform__lightbox__container","JotformLightbox","codes","javsScriptCodes","GetJotformLightbox","setIndex","Code","codeJson","textOverflow","BlogPosts","step","tilesToShow","setTilesToShow","showMore","BlogPostTitle","postDate","VideoHolder","VideoItem","youtubeCode","captionTitleYoutube","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","ExpandableHtml","open","setOpen","buttonTitle","icon","iconOpen","iconClosed","panelCollapsed","panelOpen","thumbnails","thumbnail","_images","_thumbImages","_texts","_text","testimonialPanel","testimonialItem","testimonialItem_title","testimonialItem_desc","testimonialItem_bottom","TestimonialItem","startRatingColor","ratingValue","rating","TestimonialPanel","testimonialItems","exTextItem","ExpandablePanel","data-anchor-status","data-cms-item-anchor","data-cms-anchor","sliderAwardPanel","sliderImageWrapper","sliderImageWrapper2","sliderImage","SliderAwardPanel","sliderAwardItems","bottomText","numOfSlides","maxNum","ProductItems","categories","mainCategory_name","categoryId","selectedCategories","c","CheckAuthView","Items","defaultCategories","defaultCategoriesArray","select_mainCategory","getCategoryListModel","categoryListForm","_items","sortProudcts","favorites","seqInCategory","seq","setShowProducts","showProducts","_checkAuth","sort","cart","stepsWrapper","steps","stepCurrent","stepPrev","stepNext","stepLast","navs","borderBottom","nav","navArrow","navCurrent","navFilled","navClickable","arrow","arrowPrev","arrowNext","StepNav","stepInfo","currentStep","moveTo","canGo","filled","details","optionName","qty","minWidth","summary","totalHdr","totalAmount","CartSummary","shippingMethod","shippingAmount","borderTop","OrderItems","moveNext","ItemVariantSummary","orderItem","variantOptionsSerialised","Name","Value","acc","orderItems","orderItemType","orderItemId","itemName","unitPrice","itemAmount","getOrderItemFormData","itemArray","orderItemData","Shipping","saveShipping","pay","stripeWrapper","formActions","paymentInfoText","Pay","payStripe","stripe","setStripe","card","setCard","Stripe","create","base","fontSmoothing","invalid","iconColor","initStripe","OrderIdToken","createToken","tokenId","itemTotalAmount","Cart","canceled","errorMsg","errormsg","CartMainView","setCart","CartView","EmptyCart","goNext","setGoNext","setAction","initialSteps","setSteps","setCurrentStep","lastStep","setLastStep","movePrev","markAsFilled","canGoNext","canGoPrev","useStep","orderItemForm","orderItemChanged","shippingForm","shippingCountry","getShippingFormData","checkOutForm","cartModel","stepStyle","next","orderType","stepView","EcmItems","ItemBranch","typeCode","rotatingReviewPanel","reviewContent","starsImage","reviewer","image_icon","RotatingReviewPanel","RotatingReviewItems","textColor","photoSlide","PhotoSlide","original","setImageUrl","disableBackgroundClose","slideInterval","showFullscreenButton","_tileType","tileType","PageMemo","memo","sectionItems","section","Section","sectionName","getMetaTag","pageTypeCode","prevProps","nextProps","ViewPage","pageLoaded","setPageLoaded","setData","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","useInstagram","redirectTo","CmsRadioSender","controller","cloned","postMessage","htmlChanges","sendMessageToParent","returnTo","CmsRadioReceiver","self","selectItem","mediaSelectedCKEditor","getAllDirtyHtml","sender","returnAllDirtyHtml","getHtml","returnHtml","tools","callFunction","funcNum","selectedPath","selectItemFromController","CmsHtmlEditor","ckeditorConfig","startupFocus","filebrowserBrowseUrl","filebrowserImageBrowseUrl","extraPlugins","toolbar","groups","extraAllowedContent","ckeditorStylesSet","$editor","CKEDITOR","disableAutoInline","editor","stylesSet","on","evt","ed","markDirtyHtml","instances","cmsCurrentEditor","getData","destroy","CmsPageController","viewOnly","receiver","htmlEditor","$","initGlobalVars","prop","off","is","change","_value","ctrlKey","which","saveAllDirtyHtml","$item","fromController","doubleclicked","cke_top","closeEditingItem","findItem","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","publishVer","editVer","pageId","cmsPageController","SearchBar","onCloseMenu","setKeyword","NavBar","currentLocation","menuItemElts","MenuItem","AuthMenuItem","subMenuOpened","setSubMenuOpened","SubMenuItem","toggleSubmenu","back_text","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","_style","_polygon","_path","_path2","line__container","topScrolled","logo","logoImg","logoScrolled","shopping__cart","shopping__cart__scrolled","shopping__cart__num","hr","hr__1","hr__2","flexContainer","buttonContainer","formForMobile","input","_extends","source","call","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","enableBackground","xmlSpace","points","ForwardRef","forwardRef","SearchButton","openInput","setInfo","countContainer","count","CartButton","cartIconC","TopHeader","menuOpened","setMenuOpened","setScrolled","useScrollPosition","prevPos","currPos","BottomDock","isCurrent","linkElts","iconHover","CommonVideoPopup","setSources","onOpen","AppRouteChanged","parallax","dataArr","getPositionData","ts","shift","setCurrentPositionInArray","setPositionData","saveScrollPosition","foundIndex","findIndexReverse","getPreviousPostitionInArray","getPreviousPostition","anchor","dataStr","ViewPartial","getEnquiryFormModel","ProductPagePartial","ProductView","slug","totalCnt","Product","mainPhoto","productImages","allPhotos","setHeroImage","openPopup","setOpenPopup","pdfViewPath","setPdfViewPath","pdfViewNumPages","setPdfViewNumPages","pdfViewWidth","setPdfViewWidth","pdfViewScale","setPdfViewScale","enquiryFormModel","enquiryForm","enquiryFormRender","_description","wholesaleDescription","favorite","setFavorite","photo","PdfViewItem","onDocumentLoadSuccess","numPages","closePdfViewer","changePdfViewScale","itemScope","itemType","itemProp","pre","_localStorageFavorites","_new","abc","scale","passive","download","onLoadSuccess","pageIndex","metaDesc","intro","EnquiryFormView","cookieValue","cookie","row","startsWith","productImg","productVal","uniqueId","enquiryFormQty","enquiryItems","setEnquiryItems","addToQuote","closeAddEnquiryForm","_fi","_cookie","removeEnquiryItem","orderDetails","fv","OrderDetails","Details","paidOrder","orderNo","orderDate","itemDescHtml","addedUnitPrice","discountUnitPrice","addr","Billing","billingAddr","street1","street2","suburb","postcode","dash_board_banner","dash_board_menus","dash_board_menu","order_list","order_list_item","getWholesaleRegisterModel","checkReadOnly","readOnly","hideTermsAndConditions","checkToUpdateForm","WholesaleRegisterView","functionFrom","WholeSaleDashBoardView","setCurrent","Authorization","statusCode","LoadingView","logOut","OrderListView","AccountDetailsView","sendValues","_data","wholeSaleRegister","wholeSalAdrBilling","wholeSalAdrSelling","orders","orderData","setOrderData","OrderListItem","orderIdToken","order_detail_wholesale_user_banner","order_detail_wholesale_user_info","go_button","WholeSaleDashBoardOrderView","setOrder","OrderViewItem","ForgotPassword","username","setUsername","noValidate","ResetPassword","setPassword","u","AppLayout","storeContext","openAddEnquiryForm","AOS","App","isLocalhost","Boolean","serviceUpdateCheckerInterval","registerValidSW","swUrl","serviceWorker","register","updateViaCache","registration","scope","waiting","update","preventDevToolsReloadLoop","getRegistration","active","oldSw","ev","newSw","onupdatefound","installing","installingWorker","onstatechange","onUpdate","onSuccess","URL","contentType","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.fb20252f.chunk.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 157;","const settings = {\r\n // xs, sm, md, lg, xl, xxl <-- only sample, check your breakpoints settings.\r\n // < 576 768 992 1200 1600\r\n breakpointNames: ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'],\r\n numOfTilesPerBreakpoints: [2, 2, 2, 3, 4, 6],\r\n marginLR: [14, 20, 20, 20, 20, 20],\r\n marginTB: [14, 20, 20, 20, 20, 20],\r\n}\r\n\r\nexports.settings = settings","// 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';\r\n\r\nexport function NotFound(props) {\r\n const debugInfo = props.debugInfo;\r\n\r\n function refreshPage(e) {\r\n e.preventDefault();\r\n if (typeof window !== `undefined`) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n function goBack(e) {\r\n e.preventDefault();\r\n if (typeof window !== `undefined`) {\r\n window.history.back();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

404 Error

\r\n\r\n

Please refreshPage(e)}>refresh your browser.

\r\n
\r\n \r\n
\r\n\r\n {\r\n debugInfo &&\r\n
Error message: {debugInfo.pageUrl} - {debugInfo.loadFrom} 
\r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n )\r\n}","const config = {\n isProd: process.env.NODE_ENV === \"production\",\n locale: getLocale(),\n siteName: process.env.REACT_APP_SITENAME,\n titleSuffix: process.env.REACT_APP_TITLESUFFIX,\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 stripeKey: process.env.REACT_APP_STRIPE_KEY,\n reCaptchaSiteKey: process.env.REACT_APP_RECAPTCHASITEKEY,\n jamDiscountProducts : process.env.REACT_APP_JAMDISCOUNTPRODUCTS,\n pasteDiscountProducts : process.env.REACT_APP_PASTEDISCOUNTPRODUCTS,\n relishDiscountProducts : process.env.REACT_APP_RELISHDISCOUNTPRODUCTS,\n marmaladeDiscountProducts : process.env.REACT_APP_MARMALADEDISCOUNTPRODUCTS,\n syrupDiscountProducts : process.env.REACT_APP_SYRUPDISCOUNTPRODUCTS,\n teaDiscountProducts : process.env.REACT_APP_TEADISCOUNTPRODCTS,\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\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 getDevCartId: function() {\n return !config.isProd && typeof window !== `undefined` ? window.localStorage.getItem('cart') : null\n },\n setDevCartId: function(cartId) {\n if(!config.isProd && typeof window !== `undefined`) window.localStorage.setItem('cart', cartId)\n }\n}","import React from 'react';\r\nimport env from '../../env';\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 if (checkStatus === 'checking') {\r\n if (typeof window !== `undefined`) {\r\n window.updateSW().then(function () {\r\n console.log('sw update called');\r\n setCheckStatus('checked')\r\n })\r\n }\r\n\r\n let timer = setTimeout(() => {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload()\r\n }\r\n }, 5000)\r\n return () => { 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';\r\n\r\nexport function Button({onClick, status, children, btnStyle='primary', className}) {\r\n let buttonStyle = 'btn-' + btnStyle;\r\n return (\r\n \r\n );\r\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","const overloading = {\n breakpointNames: ['sm', 'md', 'lg', 'xl', 'xxl'],\n breakpoints: [576, 768, 992, 1200, 1600]\n}\n\nconst colors = {\n colorGreen : '#1a2d13',\n colorLightGreen : '#515e43',\n colorRed : '#8d2b00',\n colorLightRed : '#493b3f',\n colorLightGrey : '#ded4bf',\n colorYellow : '#f9c700'\n}\n\nconst variables = {\n familyBase: '\"futura-pt\",sans-serif',\n familyHeader: '\"atocha\",serif',\n\n primaryColor: colors.colorRed,\n fontColor: colors.colorLightRed,\n bgColor: '#ebebeb',\n\n ...colors,\n ...overloading\n}\n\nexport default variables;","import firebase from \"firebase/compat/app\";\r\nimport \"firebase/compat/auth\";\r\n\r\n/**\r\n * Returns a promise that resolves with an ID token if available.\r\n * @return {!Promise} The promise that resolves with an ID token if\r\n * available. Otherwise, the promise resolves with null.\r\n */\r\nconst getIdToken = () => {\r\n return new Promise((resolve, reject) => {\r\n const unsubscribe = firebase.auth().onAuthStateChanged((user) => {\r\n unsubscribe();\r\n if (user) {\r\n user.getIdToken().then((idToken) => {\r\n resolve(idToken);\r\n }, (error) => {\r\n resolve(null);\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n};\r\n\r\nconst getFirebaseUser = () => {\r\n return new Promise((resolve, reject) => {\r\n const unsubscribe = firebase.auth().onAuthStateChanged((user) => {\r\n unsubscribe();\r\n resolve(user);\r\n });\r\n });\r\n};\r\n\r\nexport { getIdToken, getFirebaseUser }","import variables from './cssInJs/variables';\r\nimport { getIdToken } from 'lib/auth/services/authHelper';\r\n\r\nconst cssEmotion = {\r\n breakpointNames: variables.breakpointNames,\r\n breakpoints: variables.breakpoints\r\n}\r\n\r\n// const firebaseSettings = {\r\n// apiKey: \"AIzaSyBItcsK4c8oSqWgXsiDVyUCcdw3pZKmi2E\",\r\n// authDomain: \"australiannativefoodco.firebaseapp.com\",\r\n// projectId: \"australiannativefoodco\",\r\n// storageBucket: \"australiannativefoodco.appspot.com\",\r\n// messagingSenderId: \"200209144198\",\r\n// appId: \"1:200209144198:web:cf8b2569d5188fc51b7407\"\r\n// };\r\n\r\nconst firebaseSettings = {\r\n apiKey: \"AIzaSyAetZiNVS9jAq1bdNxpEu8yLy22ejtgYSU\",\r\n authDomain: \"ki-fresh-garlic.firebaseapp.com\",\r\n databaseURL: \"https://ki-fresh-garlic.firebaseio.com\",\r\n projectId: \"ki-fresh-garlic\",\r\n storageBucket: \"ki-fresh-garlic.appspot.com\",\r\n messagingSenderId: \"14736933462\",\r\n appId: \"1:14736933462:web:b1073f5064f9706c\"\r\n};\r\n\r\nconst apiNetJwt = async (options) => {\r\n const token = await getIdToken();\r\n //console.log(token)\r\n if (token) {\r\n options.headers = options.headers || {};\r\n options.headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n};\r\n\r\nexport default {\r\n cssEmotion,\r\n firebaseSettings,\r\n apiNetJwt\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","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 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 utils from \"../utils\";\r\nimport env from '../env';\r\nimport { isMin } from '../lib/css-emotion'\r\n\r\nexport const isMobile = () => {\r\n // isMin.md() ==> min-width: 768px\r\n return !isMin.md()\r\n}\r\n\r\nexport function resourcePath(url){\r\n if (!url) return null;\r\n if (url && url.indexOf('/assets/') === 0) return url;\r\n return utils.url.isExternalLink(url)? url : env.resourceBase + url;\r\n}\r\n\r\nexport function fullUrl(url){\r\n return utils.url.isExternalLink(url)? url : env.baseOrigin + url;\r\n}\r\n\r\n\r\nexport const isNZ = env.locale === 'nz'\r\n\r\n","import coreUtils from '../lib/utils-core';\r\nimport * as site from '../site/siteUtils';\r\n\r\nexport default { ...coreUtils, site };","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","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 { 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}","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);","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}","// 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 utils from '../../utils';\r\n\r\nexport function loadApi(onApiReady) {\r\n \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 tag.id = 'youtubeIframeApJaba';\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\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}","import React from 'react';\r\nimport utils from '../../utils';\r\nimport * as yt from './iframeApi';\r\nimport { FaRegPlayCircle } from 'react-icons/fa';\r\nimport { useStore } from '../../store';\r\n\r\nexport function YoutubeEmbedPopup({ url, title, posterUrl }) {\r\n const { dispatch } = useStore();\r\n\r\n const videoId = yt.getYoutubeCode(url);\r\n const posterImageUrl = utils.site.resourcePath(posterUrl || yt.thumbnailMax(videoId));\r\n const [popupIndex, setPopupIndex] = React.useState(0);\r\n\r\n function openVideo() {\r\n setPopupIndex(popupIndex + 1);\r\n dispatch({ type: 'SET_POPUP', payload: { sources: [\r\n // \r\n 'https://www.youtube.com/watch?v=' + videoId\r\n ], popupIndex: popupIndex + 1} });\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","function payload(item, key, defaultVal = '') {\r\n const found = item.payloads.find(x => x.key === key);\r\n return found ? found.value : defaultVal;\r\n}\r\n\r\nfunction getCodeJson(item) {\r\n const code = payload(item, 'Code');\r\n const codeType = payload(item, 'CodeType');\r\n if (codeType === 'Json') {\r\n const codeJson = JSON.parse(code);\r\n return codeJson\r\n }\r\n return null\r\n}\r\n\r\n\r\nfunction hasItemInPageDataByItemTypeCode(pageData, itemTypeCode) {\r\n return hasItemInPageData(pageData, item => item.itemTypeCode === itemTypeCode);\r\n}\r\n\r\n// hasItemInPageData(cmsOption.pageData, '')\r\n// matchFn = (item) => item.itemTypeCode === itemTypeCode\r\nfunction hasItemInPageData(pageData, matchFn) {\r\n if (!pageData) return false;\r\n for (let i = 0; i < pageData.sections.length; i++) {\r\n if (hasItemInItems(pageData.sections[i].items, matchFn)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction hasItemInItems(items, matchFn) {\r\n if (!items) return false;\r\n for (let i = 0; i < items.length; i++) {\r\n if (matchFn(items[i])) return true;\r\n if (hasItemInItems(items[i].items, matchFn)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport default { payload, getCodeJson, hasItemInPageData, hasItemInItems, hasItemInPageDataByItemTypeCode };","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport cmsUtils from '../../cmsUtils';\r\nimport { Item } from '../../../../cms/items/item';\r\nimport utils from '../../../../utils';\r\n\r\nexport function Panel(props) {\r\n \r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n const panelType = props.panelType || \"normal__type\";\r\n\r\n //console.log('item', item, subItems);\r\n //console.log(cmsUtils.hasItemInPageDataByItemTypeCode(cmsOption.pageData, 'DestinationOperators'))\r\n\r\n const bgColor = cmsUtils.payload(item, 'BgColor');\r\n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\r\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\r\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\r\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\r\n //console.log(bgTheme)\r\n\r\n let bgUrl = null;\r\n if (imageUrl)\r\n bgUrl = utils.site.resourcePath(imageUrl);\r\n else if (backgroundTile)\r\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\r\n\r\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '', panelType);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n\r\n return (\r\n
\r\n
\r\n
{subItemsElts}
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Panel } from '../panel/view/panel';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'BigPanel', \r\n itemElt: (item, cmsOption) => \r\n}","import React from 'react';\r\nimport cmsUtils from '../cmsUtils';\r\nimport { InstagramFeed } from 'components';\r\nimport { isOffline } from '@site/_offline';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => (cmsUtils.getCodeJson(item) || {})['control'] === 'instagram', \r\n itemElt: (item, cmsOption) => (!isOffline() && )\r\n}","// export { getOfflinePage, getOperators, getOperator, getOperatorById, getFeaturedOperators, getDestination, getExpTypes, getExpType } from './dbSelect'\r\n// export { indexOfflineData } from './dbInsert'\r\n// export { addCache, checkCache, existInCache, getAllImagesInCache } from './cache'\r\n// export { getOfflineMedia } from './media'\r\n// export { initInstallEventHandler, isInPWA } from './pwa'\r\n// export { isIOS } from './device'\r\n\r\nexport function isOffline() {\r\n // return true;\r\n return !navigator.onLine;\r\n}\r\n\r\n\r\nexport async function getStorageInfo() {\r\n const messages = []\r\n if (!('indexedDB' in window)) {\r\n console.log('not supported')\r\n }\r\n if ('caches' in window) {\r\n messages.push('Cache available')\r\n }\r\n if (navigator.storage && navigator.storage.estimate) {\r\n const quota = await navigator.storage.estimate();\r\n // quota.usage -> Number of bytes used.\r\n // quota.quota -> Maximum number of bytes available.\r\n const percentageUsed = ((quota.usage / quota.quota) * 100).toFixed(2);\r\n messages.push(`You've used ${percentageUsed}% of the available storage.`);\r\n const remaining = ((quota.quota - quota.usage) / 1024 / 1024).toFixed(2);\r\n messages.push(`You can write up to ${remaining} more MBs.`);\r\n }\r\n\r\n if (navigator.storage && navigator.storage.persist) {\r\n const persistent = await navigator.storage.persist();\r\n if (persistent)\r\n messages.push(\"Storage will not be cleared except by explicit user action\");\r\n else\r\n messages.push(\"Storage may be cleared by the UA under storage pressure.\");\r\n }\r\n\r\n return messages;\r\n}\r\n","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 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 { 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 { 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 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}","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;","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 } 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, 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\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 mainCategory && mainCategory !== '' &&\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","//#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 { css } from '@emotion/core'\r\nimport { variables, mq } from '../../cssInJs';\r\nimport { darken } from 'polished';\r\n\r\nconst buttonColor = variables.primaryColor;\r\n\r\nconst baseStyle = {\r\n button: mq({\r\n color: 'white',\r\n padding: '0.7rem 1.5rem 1rem 1.5rem',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n display: 'inline-block',\r\n appearance: 'none',\r\n '-webkit-appearance': 'none',\r\n //margin: '0 0.5rem',\r\n '&:hover .buttonBg': {\r\n background: darken(0.1, buttonColor),\r\n },\r\n '&:hover': {\r\n color: 'white',\r\n textDecoration: 'none',\r\n }\r\n }),\r\n buttonBg: {\r\n transition: 'all 0.3s',\r\n borderRadius: '100%',\r\n position: 'absolute',\r\n background: buttonColor,\r\n right: '-200px',\r\n left: '-200px',\r\n top: '-200px',\r\n content: '\"\"',\r\n bottom: '0',\r\n zIndex: '0',\r\n },\r\n buttonTxt: {\r\n zIndex: '1',\r\n position: 'relative',\r\n }\r\n}\r\n\r\nconst smallStyle = {\r\n button: css(baseStyle.button, {\r\n fontSize: '0.85rem',\r\n fontWeight: 600,\r\n letterSpacing: 1,\r\n padding: '0.3rem 1.5rem 0.3rem 1.5rem',\r\n '&:hover .buttonBg': {\r\n background: darken(0.1, buttonColor),\r\n },\r\n }),\r\n buttonBg: css(baseStyle.buttonBg, {\r\n background: buttonColor,\r\n }),\r\n buttonTxt: baseStyle.buttonTxt\r\n}\r\n\r\nexport function getButtonStyle(type) {\r\n if (type === 'small') {\r\n return smallStyle\r\n }\r\n return baseStyle\r\n} \r\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport { getButtonStyle } from './buttonStyle';\r\n\r\nexport function FormButton({ onClick, status, children, buttonStyle, overridingStyle, to, ...other }) {\r\n const s = getButtonStyle(buttonStyle);\r\n const ss = overridingStyle || {};\r\n return \r\n \r\n \r\n {status === 'pending' && }\r\n {children}\r\n \r\n}\r\n","import React from 'react';\r\nimport env from '../../../env';\r\nimport { usePost } from '../../../components';\r\nimport { useForm } from '../../../form';\r\nimport { ErrorMessage } from '../../../components';\r\nimport { getModel } from './subscribeFormModel';\r\nimport { gtm } from '../../../lib/tracking';\r\nimport { FormButton } from '../../button/formButton';\r\nimport { variables } from 'cssInJs';\r\n\r\nimport { darken } from 'polished';\r\n\r\nexport function Subscribe() {\r\n\r\n const model = getModel({});\r\n const form = useForm(model, { usePlaceholder: true });\r\n const [sendingStatus, setSendingStatus] = React.useState(null);\r\n const post = usePost();\r\n\r\n function onSubmit(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n form.validateForm(e, () => {\r\n const value = { ...form.getValue() };\r\n post.send(env.apiBase + \"/api/contact/subscribe\", value);\r\n setSendingStatus('pending')\r\n })\r\n }\r\n\r\n\r\n if (post.done() && sendingStatus === 'pending') {\r\n var value = form.getValue();\r\n gtm.sendEvent('subscribeFormSubmitted', {contactEmail: value.email} )\r\n form.reset(model)\r\n setSendingStatus(null)\r\n }\r\n\r\n const render = (name) => form.renderControl(name, null);\r\n\r\n const overridingStyle = {\r\n button: {\r\n '&:hover .buttonBg': {\r\n background: darken(0.1, variables.colorBlue),\r\n },\r\n },\r\n buttonBg: {\r\n background: variables.colorBlue,\r\n },\r\n buttonTxt: {\r\n fontWeight: 900,\r\n color: 'white'\r\n },\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
{render('name')}
\r\n {/*
{render('phone')}
*/}\r\n
{render('email')}
\r\n
\r\n
\r\n
\r\n \r\n

By subscribing to Ecotourism Australia’s monthly newsletter, you accept the terms of our Privacy Policy

\r\n
\r\n

SUBSCRIBE NOW

\r\n \r\n \r\n {post.done() && Successfully registered!}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import { fb, validators } from '../../../lib/form';\r\n\r\nexport function getModel(data) {\r\n const model = fb.group({\r\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\r\n //phone: [data.phone || '', [validators.Required()], { label: 'Phone', type: 'text' }],\r\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\r\n }); \r\n return model;\r\n}","import React from 'react';\r\nimport cmsUtils from '../cmsUtils';\r\nimport { Subscribe } from './subscribe';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => (cmsUtils.getCodeJson(item) || {})['control'] === 'subscribe', \r\n itemElt: (item, cmsOption) => \r\n}","import React from 'react';\r\nimport parse, { domToReact, attributesToProps } from 'html-react-parser';\r\nimport utils from '../../../../utils';\r\nimport env from '../../../../env';\r\n\r\n//https://github.com/remarkablemark/html-react-parser\r\n\r\nconst options = {\r\n replace\r\n};\r\nlet _embedDataList = []\r\nlet _cmsOption = {}\r\n\r\nexport function renderHtml(html, cmsOption) {\r\n _cmsOption = cmsOption\r\n if (!cmsOption.isCmsEdit || cmsOption.cmsViewMode === 'viewonly') {\r\n _embedDataList = cmsOption?.pageData?.embedDataList;\r\n return parse(html || '', options)\r\n } else {\r\n return parse(html || '', {})\r\n }\r\n}\r\n\r\nfunction replace(node) {\r\n //console.log(node)\r\n if (!env.isProd && node.type === 'tag' && node.name === 'img') {\r\n return replaceImg(node)\r\n } else if (node.type === 'tag' && node.attribs.class === 'button') {\r\n return replaceButton(node)\r\n } else if (node.type === 'tag' && node.attribs['data-embed-jaba']) {\r\n return replaceEmbedCode(node)\r\n }\r\n\r\n}\r\n\r\nfunction replaceImg(node) {\r\n if (node.attribs && node.attribs.src) {\r\n const props = attributesToProps(node.attribs)\r\n props.src = utils.site.resourcePath(node.attribs.src)\r\n // eslint-disable-next-line\r\n return \r\n }\r\n return null\r\n}\r\n\r\nfunction replaceButton(node) {\r\n if (node.children && node.children.some(x => x.name === 'span')) return null;\r\n const props = attributesToProps(node.attribs)\r\n return React.createElement(node.name, props, {domToReact(node.children, options)});\r\n}\r\n\r\nfunction replaceEmbedCode(node) {\r\n const id = node.attribs['data-embed-jaba'];\r\n const found = utils.array.find(_embedDataList, x => x.id === id);\r\n if (found) {\r\n //console.log(found)\r\n return
{renderHtml(found.code, _cmsOption)}
\r\n }\r\n else return null;\r\n}","import React, { useRef } from 'react';\r\nimport cmsUtils from '../../cmsUtils';\r\nimport utils from '../../../../utils';\r\n\r\nimport { useRouter } from '../../../../components';\r\n\r\nimport { handleElementLink } from '../../../../components';\r\nimport env from '../../../../env';\r\nimport { renderHtml } from './renderHtml';\r\n\r\n//import { Document, Page } from 'react-pdf'\r\n//import { Document, Page } from 'react-pdf/dist/entry.webpack';\r\n\r\nexport function Html(props) {\r\n const ver = env.ver;\r\n const item = props.item;\r\n //const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n const { history } = useRouter();\r\n //const [ pdfViewPath, setPdfViewPath ] = React.useState(null)\r\n //console.log('item', item, cmsOption);\r\n\r\n const year = (new Date()).getFullYear();\r\n let content = cmsOption.isCmsEdit ?\r\n cmsUtils.payload(item, 'Content') :\r\n cmsUtils.payload(item, 'Content')\r\n .replace(/__year__/g, year)\r\n .replace(\"__version__\", \" PWA \" + ver + \"\")\r\n .replace(/class=\"aos_effect_up\"/gi, `class=\"aos_effect_up\" data-aos=\"fade-up\"`);\r\n \r\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n\r\n //let itemElt = (
);\r\n\r\n function handleClick(e) {\r\n\r\n let target = \"\";\r\n if (e.target.closest('a')) {\r\n target = e.target.closest('a').getAttribute('target');\r\n }\r\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\r\n //const link = utils.url.getLinkFromElement(e.target);\r\n //console.log('clicked', e, e.target, processed);\r\n\r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n history.push(processed.linkInfo.url)\r\n } else {\r\n //e.preventDefault();\r\n //e.stopPropagation();\r\n // setPdfViewPath(utils.site.resourcePath(link))\r\n\r\n // process expandable old\r\n // if(e.target.closest('a')){\r\n // let href = e.target.closest('a').getAttribute('href') + \"\";\r\n // if(href.indexOf('#') !== -1){\r\n // let _href = href.split('#');\r\n // console.log(\"_href\", _href);\r\n // let el = document.querySelector('section[data-cms-item-anchor=\"' + _href[1] + '\"]');\r\n // if (el) {\r\n // let anchorStatus = el.getAttribute('data-anchor-status');\r\n // if(anchorStatus === \"collapse\"){\r\n // el.setAttribute('data-anchor-status', 'expand');\r\n // el.classList.add(\"expand\");\r\n // }\r\n // else{\r\n // el.setAttribute('data-anchor-status', 'collapse');\r\n // el.classList.remove(\"expand\");\r\n // }\r\n // }\r\n // e.preventDefault();\r\n // e.stopPropagation(); \r\n // }\r\n // }\r\n\r\n // process expandable\r\n if (e.target.closest('a')) {\r\n let aLink = e.target.closest('a')\r\n let href = aLink.getAttribute('href') + \"\";\r\n if (href.indexOf('#') !== -1) {\r\n let _href = href.split('#');\r\n console.log(\"_href\", _href);\r\n const targetId = _href[1]\r\n let targetElt = document.querySelector('section[data-cms-item-anchor=\"' + _href[1] + '\"]');\r\n\r\n const runEffect = () => {\r\n let anchorStatus = targetElt.getAttribute('data-anchor-status');\r\n if (anchorStatus === \"collapse\") {\r\n targetElt.setAttribute('data-anchor-status', 'expand');\r\n targetElt.classList.add(\"expand\");\r\n }\r\n else {\r\n targetElt.setAttribute('data-anchor-status', 'collapse');\r\n targetElt.classList.remove(\"expand\");\r\n }\r\n }\r\n\r\n if (targetElt) {\r\n const wrapper = aLink.closest('p, div, h1, h2, h3, h4, h5')\r\n const nextElt = wrapper.nextElementSibling\r\n //console.log(wrapper, nextElt)\r\n\r\n if (nextElt && nextElt.getAttribute('data-cms-item-anchor') === targetId) {\r\n // already in wrapper\r\n } else {\r\n // no wrapper\r\n wrapper.insertAdjacentElement(\"afterend\", targetElt);\r\n }\r\n\r\n window.setTimeout(runEffect, 100)\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n const htmlBlock = useRef(null);\r\n return (\r\n <>\r\n
handleClick(e)}>\r\n {renderHtml(content, cmsOption)}\r\n
\r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport { Html } from './view/html';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'Html', \r\n itemElt: (item, cmsOption) => \r\n}","import facepaint from 'facepaint'\r\n// 'sm', 'md', 'lg', 'xl', 'xxl'\r\nconst breakpoints = [576, 768, 992, 1200, 1600, 1900, 2200] \r\n\r\nexport const mqBanner = facepaint(\r\n breakpoints.map(bp => `@media (min-width: ${bp}px)`)\r\n)\r\n\r\n// 576, 768, 992, 1200, 1600, 1900, 2200\r\nexport const bannerThin = [250, 250, 250, 250, 250, 270, 290, 300] //export const bannerThin = [180, 190, 200, 220, 250, 270, 290, 300]\r\nexport const bannerStandard = [350, 350, 400, 450, 500, 550, 600, 700]\r\n\r\nexport const getBannerSize = (setName) => {\r\n if (setName === 'standard')\r\n return bannerStandard\r\n else if (setName === 'thin')\r\n return bannerThin\r\n else\r\n return bannerStandard\r\n}","import { mqBanner, getBannerSize } from 'site/bannerSize/bannerSize';\r\n\r\nexport function getImageBannerStyle(heightSet) {\r\n const bannerSize = getBannerSize(heightSet);\r\n\r\n return {\r\n bannerHeight: mqBanner({\r\n height: bannerSize,\r\n backgroundPositionX: 'center'\r\n }),\r\n photoCredit: mqBanner({\r\n color: 'white',\r\n fontSize: '0.8rem',\r\n transform: 'rotate(-90deg) translate(-50%, 10px)',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '0',\r\n textAlign: 'center',\r\n transformOrigin: 'left top',\r\n maxWidth: bannerSize.map(x => x * 0.9),\r\n '&:hover, &:active': {\r\n color: 'white'\r\n }\r\n })\r\n }\r\n}","import React from 'react';\r\nimport { au } from 'components';\r\n\r\nexport function useParallax(panelRef, _settings) {\r\n const [settings,] = React.useState(getSettings(_settings));\r\n const handleScroll = () => {\r\n //console.log('useParallax - scrolling')\r\n onScroll(settings, panelRef.current);\r\n }\r\n\r\n const reset = () => {\r\n //console.log('useParallax - reset');\r\n setTimeout(() => { onResize(settings, panelRef.current); handleScroll(); }, 300)\r\n }\r\n\r\n React.useEffect(() => {\r\n\r\n reset();\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 if (typeof window !== `undefined`) {\r\n window.removeEventListener('scroll', handleScroll)\r\n window.removeEventListener('resize', reset)\r\n }\r\n }\r\n // eslint-disable-next-line \r\n }, []);\r\n return { reset };\r\n}\r\n\r\nfunction getSettings(settings) {\r\n const defaultSettings = {\r\n cutoffPadding: 10,//px\r\n paddingHeightRatio: 1,\r\n stretchToFit: true,\r\n actionRange: [0.1, 0.9],\r\n imageRatio: 1080 / 1920,\r\n panelHeight: 'auto',\r\n cutTop: 0,\r\n cutBottom: 0\r\n }\r\n return Object.assign({}, defaultSettings, settings);\r\n}\r\n\r\n\r\nexport function onResize(settings, el) {\r\n const screenSize = au.getScreenSize();\r\n const autoPanelHeight = !settings.panelHeight || settings.panelHeight === 'auto';\r\n const panelHeight = autoPanelHeight ? el.offsetHeight : parseFloat(settings.panelHeight);\r\n //console.log(autoPanelHeight, panelHeight)\r\n\r\n let bgHeight = 0, bgWidth = 0;\r\n bgHeight = panelHeight * (1 + settings.paddingHeightRatio) + 2 * settings.cutoffPadding;\r\n bgWidth = (bgHeight * (1 + settings.cutTop + settings.cutBottom)) / settings.imageRatio;\r\n //console.log(panelHeight, settings.paddingHeightRatio, bgHeight, bgWidth)\r\n if (settings.stretchToFit && bgWidth < screenSize.width) {\r\n // magnifying the background image to fix the full width of the browser\r\n bgHeight = screenSize.width * settings.imageRatio;\r\n bgWidth = (bgHeight * (1 + settings.cutTop + settings.cutBottom)) / settings.imageRatio;\r\n //console.log('magnified', bgHeight, bgWidth, screenSize)\r\n }\r\n \r\n const cutTopPx = bgHeight * (1 + settings.cutTop + settings.cutBottom) * settings.cutTop\r\n const cutBottomPx = bgHeight * (1 + settings.cutTop + settings.cutBottom) * settings.cutBottom\r\n let fromTop = -settings.cutoffPadding;\r\n let toTop = -(bgHeight - panelHeight - settings.cutoffPadding);\r\n fromTop += (fromTop - toTop) > cutTopPx ? cutTopPx : 0\r\n toTop += (fromTop - toTop) > cutBottomPx ? cutBottomPx : 0\r\n //console.log('shift', cutTopPx, cutBottomPx, bgHeight, fromTop, toTop)\r\n\r\n el.setAttribute('data-fromTop', fromTop)\r\n el.setAttribute('data-toTop', toTop)\r\n\r\n if (!autoPanelHeight)\r\n el.style.height = settings.panelHeight + 'px';\r\n\r\n el.style.backgroundSize = bgWidth + 'px ' + bgHeight + 'px'\r\n}\r\n\r\nexport function onScroll(settings, el) {\r\n const pr = au.getScrollProgress(el).progress;\r\n //console.log(pr, panel.calculated);\r\n\r\n const min = parseFloat(el.getAttribute('data-fromTop'));\r\n const max = parseFloat(el.getAttribute('data-toTop'));\r\n const top = au.prVal(min, max, pr, settings.actionRange/*[0, 1]*/);\r\n //console.log(min, max, top);\r\n el.style.backgroundPositionY = top + 'px'\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport React from 'react';\r\nimport cmsUtils from '../../cmsUtils';\r\nimport utils from 'utils';\r\nimport { SiteLink } from 'components';\r\nimport { getImageBannerStyle } from './imagePanelStyle';\r\nimport { useParallax } from 'site/useParallax/useParallax';\r\n\r\nexport function ImagePanel(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n //console.log(cmsOption)\r\n //console.log('item', item);\r\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\r\n const photoCredit = cmsUtils.payload(item, 'PhotoCredit');\r\n const photoCreditUrl = cmsUtils.payload(item, 'PhotoCreditUrl');\r\n const hideTop = cmsUtils.payload(item, 'HideTop') || '0';\r\n const hideBottom = cmsUtils.payload(item, 'HideBottom') || '0';\r\n \r\n const cssClass = utils.classNames('cms_item', 'imagePanel', 'parallax_notused', `bannerSize_notused--${heightSet}`, item.cssClass || item.anchorName || '');\r\n \r\n const bgUrl = cmsOption.pageOptions && cmsOption.pageOptions.imagePath ?\r\n utils.site.resourcePath(cmsOption.pageOptions.imagePath):\r\n utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\r\n\r\n const htmlBlock = React.useRef(null);\r\n const cssClass2 = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n const content = cmsUtils.payload(item, 'Content');\r\n\r\n const parallaxSetting = {\r\n cutoffPadding: 10,//px\r\n paddingHeightRatio: 1,\r\n stretchToFit: true,\r\n actionRange: [0.1, 0.9],\r\n imageRatio: 1080 / 1920,\r\n panelHeight: 'auto',\r\n cutTop: hideTop? parseFloat(hideTop) : 0,\r\n cutBottom: hideBottom? parseFloat(hideBottom) : 0\r\n }\r\n //console.log(parallaxSetting)\r\n \r\n const panelRef = React.useRef(null);\r\n useParallax(panelRef, parallaxSetting);\r\n\r\n const s = getImageBannerStyle(heightSet);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {(photoCredit && !photoCreditUrl) &&
{photoCredit}
}\r\n {(photoCredit && photoCreditUrl) && {photoCredit}}\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { ImagePanel } from './view/imagePanel';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'ImagePanel', \r\n itemElt: (item, cmsOption) => \r\n}","//import { mq } from '../../../../cssInJs';\r\n\r\nexport default {\r\n member_login : {\r\n \r\n },\r\n\r\n logged_in_text : {\r\n \r\n },\r\n\r\n form : {\r\n //maxWidth: '600px'\r\n },\r\n button : {\r\n //transition: 'all 0.2s ease-out',\r\n '&:hover' : {\r\n color: '#8d2b00',\r\n //fontWeight: '700'\r\n }\r\n }\r\n}","import firebase from \"firebase/compat/app\";\nimport \"firebase/compat/auth\";\n\n/**\n * Returns a promise that resolves with an ID token if available.\n * @return {!Promise} The promise that resolves with an ID token if\n * available. Otherwise, the promise resolves with null.\n */\nconst getIdToken = () => {\n return new Promise((resolve, reject) => {\n const unsubscribe = firebase.auth().onAuthStateChanged((user) => {\n unsubscribe();\n if (user) {\n user.getIdToken().then((idToken) => {\n resolve(idToken);\n }, (error) => {\n resolve(null);\n });\n } else {\n resolve(null);\n }\n });\n });\n};\n\nconst getFirebaseUser = () => {\n return new Promise((resolve, reject) => {\n const unsubscribe = firebase.auth().onAuthStateChanged((user) => {\n unsubscribe();\n resolve(user);\n });\n });\n};\n\nexport { getIdToken, getFirebaseUser }","import utils from '../../utils';\r\n//import siteConfig from '../../config';\r\n\r\nexport async function fetchGet(url, signal, apiNetJwt) {\r\n //console.log(url, options);\r\n const options = {}\r\n apiNetJwt && await apiNetJwt(options);\r\n\r\n const res = await fetch(url, { \r\n method: 'GET', \r\n signal,\r\n ...options\r\n });\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 throw new Error(json.message)\r\n }\r\n } catch (e) {\r\n throw e;\r\n }\r\n const statusText = res.status === 401 ? 'Permission denied. Please login first.' : res.statusText\r\n throw new Error('Error - [' + res.status + ']' + res.status + (statusText && (' - ' + statusText)))\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 const errMessages = utils.form.getErrors(json);\r\n throw new Error(errMessages.join(', '))\r\n }\r\n return json;\r\n}\r\n\r\n\r\nexport async function fetchPost(url, data, signal, apiNetJwt) {\r\n //console.log(url, options);\r\n const options = { headers: { 'Content-Type': 'application/json' } }\r\n apiNetJwt && await apiNetJwt(options);\r\n\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n signal,\r\n ...options\r\n });\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 throw new Error(json.message)\r\n }\r\n } catch (e) { }\r\n throw new Error('Error - ' + res.status + (res.statusText && (' - ' + res.statusText)))\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 const errMessages = utils.form.getErrors(json);\r\n throw new Error(errMessages.join(', '))\r\n }\r\n return json;\r\n}","import React, { useContext, createContext } from 'react';\nimport firebase from \"firebase/compat/app\";\nimport \"firebase/compat/auth\";\nimport config from 'config';\nimport env from 'env';\nimport { getFirebaseUser } from './authHelper';\nimport { fetchPost } from '@lib/net-api/fetch';\n\nfirebase.initializeApp(config.firebaseSettings);\n\nconst authContext = createContext();\n\n// Provider component that wraps your app and makes auth object available to any child component that calls useAuth().\nexport function ProvideAuth({ children }) {\n //console.log('ProvideAuth')\n const auth = useProvideAuth();\n return {children};\n}\n\n// Hook for child components to get the auth object and re-render when it changes.\nexport const useAuth = () => {\n return useContext(authContext);\n};\n\n// Provider hook that creates auth object and handles state\nfunction useProvideAuth() {\n const [authData, setAuthData] = React.useState({ user: null, queryStatus: 'loading', memberInfo: null });\n const user = authData.user;\n const setUser = (user) => setAuthData({ ...authData, user: user, queryStatus: 'resolved' });\n const setMemberInfo = (memberInfo) => {\n if (!authData.memberInfo || JSON.stringify(authData.memberInfo) !== JSON.stringify(memberInfo))\n setAuthData({ ...authData, memberInfo: memberInfo });\n };\n const isResolved = authData.queryStatus === 'resolved';\n\n //#region Firebase methods\n const signin = (email, password) => {\n return firebase\n .auth()\n .signInWithEmailAndPassword(email, password)\n .then(async (response) => {\n // await fetchPost(env.apiBase + '/api/profile/UpdateUserProfile', {\n // uid: response.user.uid,\n // email: response.user.email,\n // displayName: response.user.displayName,\n // emailVerified: response.user.emailVerified,\n // });\n\n let _result = response.user;\n await fetchPost(env.apiBase + '/api/profile/getuserprofilev2', {\n uid: response.user.uid\n }).then((result) => {\n _result = result;\n })\n\n setUser(response.user);\n return _result;\n\n });\n };\n\n const signup = (email, password, name, phone, companyName, branchSiteName) => {\n return firebase\n .auth()\n .createUserWithEmailAndPassword(email, password)\n .then(async (response) => {\n await fetchPost(env.apiBase + '/api/profile/UpdateUserProfile', {\n uid: response.user.uid,\n email: response.user.email,\n displayName: response.user.displayName,\n emailVerified: response.user.emailVerified,\n name : name,\n phone : phone,\n companyName : companyName,\n branchSiteName : branchSiteName\n });\n setUser(response.user);\n return response.user;\n });\n };\n\n const signupForWholeSale = (value) => {\n return firebase\n .auth()\n .createUserWithEmailAndPassword(value.email, value.password)\n .then(async (response) => {\n \n await fetchPost(env.apiBase + '/api/wholesale/updateuserprofile', {\n \n uid: response.user.uid,\n email: response.user.email,\n //displayName: response.user.displayName,\n emailVerified: response.user.emailVerified,\n \n firstName : value.firstName,\n lastName : value.lastName,\n businessPhone : value.businessPhone,\n mobilePhone : value.mobilePhone,\n businessName : value.businessName,\n\n abn : value.abn,\n acn : value.acn,\n\n businessCategory : value.businessCategory,\n estimatedSpend : value.estimatedSpend,\n\n billingInfo : value.billingInfo,\n shippingInfo : value.shippingInfo,\n useSameAddress : value.useSameAddress\n \n });\n\n setUser(response.user);\n return {firstName : value.firstName};\n \n });\n };\n\n // const signupForWholeSale = async (value) => {\n \n \n // console.log(\"value ----- \", value);\n \n // await fetchPost(env.apiBase + '/api/wholesale/updateuserprofile', {\n \n // uid: '',\n // email: '',\n // //displayName: response.user.displayName,\n // emailVerified: '',\n \n // firstName : value.firstName,\n // lastName : value.lastName,\n // businessPhone : value.businessPhone,\n // mobilePhone : value.mobilePhone,\n // businessName : value.businessName,\n\n // abn : value.abn,\n // acn : value.acn,\n\n // businessCategory : value.businessCategory,\n // estimatedSpend : value.estimatedSpend,\n\n // billingInfo : value.billingInfo,\n // shippingInfo : value.shippingInfo,\n\n // useSameAddress : value.useSameAddress\n \n // });\n\n // return \"test\";\n // } \n\n const signout = () => {\n return firebase\n .auth()\n .signOut()\n .then(async () => {\n setUser(null);\n });\n };\n\n const sendPasswordResetEmail = (email) => {\n return firebase\n .auth()\n .sendPasswordResetEmail(email)\n .then(() => {\n return true;\n });\n };\n\n const confirmPasswordReset = (code, password) => {\n return firebase\n .auth()\n .confirmPasswordReset(code, password)\n .then(() => {\n return true;\n });\n };\n //#endregion\n\n const currentFirebaseUser = async () => await getFirebaseUser();\n const loggedIn = async () => {\n if (user) return user;\n else {\n const user = await getFirebaseUser();\n return user;\n } \n };\n\n React.useEffect(() => {\n const unsubscribe = firebase.auth().onAuthStateChanged(async (user) => {\n //console.log('onAuthStateChanged', user)\n if (user) {\n setUser(user);\n } else {\n setUser(null);\n }\n });\n\n return () => unsubscribe();\n // eslint-disable-next-line\n }, []);\n\n // Return the user object and auth methods\n return {\n authData,\n user,\n isResolved,\n signin,\n signup,\n signupForWholeSale,\n signout,\n sendPasswordResetEmail,\n confirmPasswordReset,\n // status\n loggedIn,\n currentFirebaseUser,\n // set\n setMemberInfo,\n };\n}\n","import { variables } from 'cssInJs';\nimport { lighten } from 'polished';\n\nconst primaryColor = variables.primaryColor;\nexport const loginStatusStyle = {\n panel: {\n padding: 30,\n background: lighten(0.5, primaryColor),\n textAlign: 'center',\n '.btn': {\n minWidth: 100,\n },\n },\n};\n","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\n//import { useState } from \"react\";\r\nimport utils from \"utils\";\r\nimport style from \"./memberLoginStyle\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useRouter, Loading, SiteLink } from \"../../../../components\";\r\nimport { useAuth } from \"auth\";\r\nimport { useStore } from '../../../../store';\r\n//import env from \"../../../../env\";\r\n\r\nexport function MemberLogin(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n const cssClass = utils.classNames(\r\n \"cms_item\",\r\n \"member_login\",\r\n item.cssClass || item.anchorName || \"\"\r\n );\r\n\r\n if (cmsOption.isCmsEdit) {\r\n return (\r\n \r\n \r\n Member Login \r\n \r\n \r\n );\r\n }\r\n\r\n return ;\r\n}\r\n\r\nfunction LoginView({ cssClass, cmsOption, item }) {\r\n const auth = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const [pending, setPending] = useState(false);\r\n const [checkAuth, setCheckAuth] = useState(false);\r\n const [error, setError] = useState('');\r\n const { dispatch } = useStore();\r\n const [formValues, setFormValues] = useState({\r\n email: \"\",\r\n password: \"\",\r\n });\r\n const router = useRouter();\r\n\r\n function signout(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n auth\r\n .signout()\r\n .then((user) => {\r\n //router.push('/admin/login')\r\n router.push(\"/\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n function submit(e) {\r\n setPending(true);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n auth\r\n .signin(formValues.email, formValues.password)\r\n .then((user) => {\r\n\r\n if(user && user.results && user.results.user && user.results.user.firstName ){ \r\n dispatch({type: 'SET_STATE', payload: { userFirstName : user.results.user.firstName }}); \r\n }\r\n\r\n setPending(false);\r\n setError('');\r\n dispatch({type: 'SET_STATE', payload: { authCheck : true }});\r\n dispatch({type: 'SET_STATE', payload: { cartInfo:0 }});\r\n router.push('/wholesale-dashboard');\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n setPending(false);\r\n setError(error.message);\r\n });\r\n }\r\n\r\n function handChange(el) {\r\n const elName = el.target.name;\r\n const elValue = el.target.value;\r\n setFormValues({\r\n ...formValues,\r\n [elName]: elValue,\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n const fetch = async () => {\r\n if (await auth.loggedIn()) {\r\n setCheckAuth(true);\r\n }\r\n setLoading(false);\r\n };\r\n\r\n fetch();\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {checkAuth ? (\r\n
\r\n

\r\n {\" \"}\r\n You are already logged in{\" \"}\r\n

\r\n signout(e)}\r\n >\r\n Logout\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction LoginForm({ submit, formValues, handChange, pending, error }) {\r\n return (\r\n
\r\n

Member Login

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {pending && (\r\n \r\n )}\r\n Log In\r\n \r\n
\r\n {error &&
{error}
}\r\n
\r\n
\r\n Forgot Password?\r\n
\r\n
\r\n );\r\n}","import React from 'react';\r\nimport { MemberLogin } from './view/memberLogin';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'MemberLogin', \r\n itemElt: (item, cmsOption) => \r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport Slider from \"react-slick\";\r\nimport { settings as defaultSettings} from './config';\r\n\r\n/**\r\n * Tile List\r\n * @param {Array} tiles React elements, required\r\n * @param {Object} style Style object, required\r\n * @param {string} cssClass\r\n * @param {string} useSlider Use SlickSlider, default: false\r\n * @param {Object} settings Tile Settings, required\r\n * @param {...Object} attrs Other attributes in the list level\r\n */\r\nexport function TileList({tiles, style, overridingStyle, cssClass, useSlider = false, settings = defaultSettings, ...attrs}) {\r\n const s = style || {};\r\n const ss = overridingStyle || {};\r\n const slickSettings = settings.slickSettings;\r\n\r\n useSlider = useSlider && tiles.length > 1\r\n slickSettings.infinite = tiles.length > 2\r\n\r\n if (useSlider) {\r\n return (\r\n
\r\n
\r\n \r\n {tiles}\r\n \r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n
\r\n {tiles}\r\n
\r\n
\r\n );\r\n }\r\n\r\n}","import { variables, mq } from '../../cssInJs';\r\nimport { settings as defaultSettings} from './config';\r\n/**\r\n * Tile List Style. This is only for list wrapper, not tile itself\r\n * @param {Object} settings Tile Settings, required\r\n */\r\nexport function getTileListStyle(settings = defaultSettings) {\r\n const marginLR = settings.marginLR;\r\n const marginTB = settings.marginTB;\r\n return {\r\n holder: mq({\r\n //maxWidth: 1000,\r\n margin: 'auto',\r\n marginTop: [30, null, 40],\r\n marginBottom: [30, null, 40],\r\n '.slick-prev, .slick-next': {\r\n top: [100],\r\n transform: 'translate(0, 0)',\r\n },\r\n '.slick-prev': {\r\n left: [10, null, -20]\r\n },\r\n '.slick-next': {\r\n right: [10, null, -20]\r\n },\r\n '.slick-prev:before, .slick-next:before': {\r\n color: variables.fontColor\r\n }\r\n }),\r\n tiles: mq({\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'stretch',\r\n flexWrap: 'wrap',\r\n marginLeft: marginLR.map(x => x === null? null : -x / 2),\r\n marginRight: marginLR.map(x => x === null? null : -x / 2),\r\n marginTop: marginTB.map(x => x === null? null : x / 2),\r\n marginBottom: marginTB.map(x => x === null? null : x / 2),\r\n }),\r\n tilesSlider: mq({\r\n display: 'block',\r\n marginLeft: [15, null, 15],\r\n marginRight: [15, null, 15],\r\n })\r\n }\r\n}\r\n\r\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport utils from 'utils';\r\nimport { SiteLink } from 'components';\r\nimport { getTileStyle } from './pageTileStyle';\r\n\r\nexport function PageTile({ page, useSlider, disableLink }) {\r\n const tileLink = page.pageUrl;\r\n const imageUrl = utils.site.resourcePath(page.imageUrl);\r\n const title = page.pageTitle;\r\n const desc = page.tileDesc || page.description;\r\n const s = getTileStyle();\r\n return (\r\n \r\n
\r\n
\r\n
{title}
\r\n
{desc}
\r\n
\r\n
\r\n )\r\n}\r\n","import { variables, mq } from 'cssInJs';\r\nimport { settings as defaultSettings } from 'site/tileList/config';\r\n\r\nimport { rgba } from 'polished';\r\n\r\nexport function getTileStyle(settings = defaultSettings) {\r\n const numOfTilesPerBreakpoints = settings.numOfTilesPerBreakpoints\r\n const marginLR = settings.marginLR\r\n const marginTB = settings.marginTB\r\n\r\n return {\r\n tile: mq({\r\n paddingLeft: marginLR.map(x => x === null ? null : x / 2),\r\n paddingRight: marginLR.map(x => x === null ? null : x / 2),\r\n paddingTop: marginTB.map(x => x === null ? null : x / 2),\r\n paddingBottom: marginTB.map(x => x === null ? null : x / 2),\r\n maxWidth: numOfTilesPerBreakpoints.map(x => x === null ? null : 100 / x + '%'),\r\n flexBasis: numOfTilesPerBreakpoints.map(x => x === null ? null : 100 / x + '%'),\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n textAlign: 'left',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: 'inherit',\r\n ':hover': {\r\n textDecoration: 'none',\r\n color: 'inherit',\r\n '.tileBg': {\r\n transform: 'scale(1.02)',\r\n transition: 'all .2s ease-in-out'\r\n },\r\n '.tileContent': {\r\n backgroundColor: rgba(variables.primaryColor, 0.3),\r\n }\r\n }\r\n }),\r\n tileSlider: mq({\r\n maxWidth: '100% !important'\r\n }),\r\n tileBg: mq({\r\n backgroundColor: 'white',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n height: 0,\r\n paddingBottom: '56.25%',\r\n }),\r\n tileContent: mq({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n lineHeight: 1.3,\r\n //boxShadow: '4px 4px 14px 4px rgba(190,190,190,0.5)',\r\n backgroundColor: '#fff',\r\n marginTop: [10],\r\n padding: [20],\r\n transition: 'all .2s ease-in-out'\r\n }),\r\n title: mq({\r\n //fontFamily: variables.familyHeader,\r\n fontSize: '1.3rem',\r\n textTransform: 'uppercase',\r\n lineHeight: 1.3,\r\n fontWeight: 900,\r\n textAlign: 'center',\r\n }),\r\n desc: mq({\r\n marginTop: 5,\r\n fontSize: '0.9rem',\r\n display: '-webkit-box',\r\n WebkitLineClamp: '9',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden',\r\n }),\r\n }\r\n}\r\n\r\nexport function getTileListOverridingStyle() {\r\n return {\r\n tiles: mq({\r\n alignItems: 'flex-start',\r\n })\r\n }\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport cmsUtils from '../../cmsUtils';\r\nimport { TileList } from 'site/tileList/tileList'\r\nimport { getTileListStyle } from 'site/tileList/tileListStyle';\r\n\r\nimport { PageTile } from './pageTile/pageTile'\r\n\r\nexport function PageTiles(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n //console.log(cmsOption)\r\n //console.log('item', item);\r\n const useSlider = cmsUtils.payload(item, 'UseSlider') === 'slider';\r\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\r\n\r\n const tiles = pages.map((page, index) => )\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction getPages(pagesSerialized) {\r\n if (pagesSerialized) {\r\n return JSON.parse(pagesSerialized);\r\n }\r\n return [];\r\n}","import React from 'react';\r\nimport { PageTiles } from './view/pageTiles';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'PageTiles___', \r\n itemElt: (item, cmsOption) => \r\n}","import React from 'react';\r\nimport { Panel } from './view/panel';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'Panel', \r\n itemElt: (item, cmsOption) => \r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport utils from '../../utils';\r\nimport { SiteLink } from '../../components';\r\n\r\nimport { TileList } from '../tileList/tileList'\r\nimport { getTileListStyle } from '../tileList/tileListStyle';\r\nimport { settings } from './config';\r\n\r\nimport { getImageTileStyle } from './galleryStyle';\r\n\r\nexport function GalleryTiles({ images, openPopupImage, useSlider = false }) {\r\n if (images.length === 0) return null;\r\n const tiles = images.map((img, index) => )\r\n return \r\n}\r\n\r\nfunction ImageTile({ image, useSlider, disableLink, openPopupImage }) {\r\n const s = getImageTileStyle(settings);\r\n //const imageUrl = utils.site.resourcePath(image.imageUrl);\r\n const thumbnailUrl = image.thumbnailUrl || image.imageUrl;\r\n const tileLink = image.imageUrl;\r\n\r\n return openPopupImage(e, image)}>\r\n
\r\n
\r\n}\r\n","import { mq } from '../../cssInJs';\r\nimport { settings as defaultSettings} from '../tileList/config';\r\n\r\nexport function getImageTileStyle(settings = defaultSettings) {\r\n const numOfTilesPerBreakpoints = settings.numOfTilesPerBreakpoints\r\n const marginLR = settings.marginLR\r\n const marginTB = settings.marginTB\r\n\r\n return {\r\n tile: mq({\r\n paddingLeft: marginLR.map(x => x === null? null : x / 2),\r\n paddingRight: marginLR.map(x => x === null? null : x / 2),\r\n paddingTop: marginTB.map(x => x === null? null : x / 2),\r\n paddingBottom: marginTB.map(x => x === null? null : x / 2),\r\n maxWidth: numOfTilesPerBreakpoints.map(x => x === null? null : 100 / x + '%'),\r\n flexBasis: numOfTilesPerBreakpoints.map(x => x === null? null : 100 / x + '%'),\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n textAlign: 'left',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: 'inherit',\r\n ':hover': {\r\n textDecoration: 'none',\r\n color: 'inherit',\r\n '.tileBg': {\r\n transform: 'scale(1.02)',\r\n transition: 'all .2s ease-in-out'\r\n }\r\n }\r\n }),\r\n tileSlider: mq({\r\n maxWidth: '100% !important'\r\n }),\r\n tileBg: mq({\r\n backgroundColor: 'white',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n height: 0,\r\n paddingBottom: '100%',//'56.25%',\r\n }),\r\n }\r\n}\r\n\r\n","import React from 'react';\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport function Portal({children}){\r\n const [el] = React.useState(document.createElement('div'));\r\n React.useEffect(() => {\r\n let mount = document.getElementById(\"portal-root\");\r\n mount.appendChild(el);\r\n return () => mount.removeChild(el);\r\n }, [el]);\r\n return createPortal(children, el);\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport React from 'react';\r\nimport utils from 'utils';\r\nimport { GalleryTiles } from './galleryTiles';\r\n\r\nimport { Portal } from \"site/portal/portal\";\r\nimport FsLightbox from 'fslightbox-react';\r\n\r\nconst r = utils.site.resourcePath\r\nconst set = utils.media.getImageSetPath\r\n\r\nexport function Gallery({ images, useSlider = false }) {\r\n\r\n const [toggler, setToggler] = React.useState(false);\r\n const [popupIndex, setPopupIndex] = React.useState(0);\r\n\r\n const filtered = utils.array.distinct(images, (x, y) => x.imageUrl === y.imageUrl)\r\n if (filtered.length === 0) return null;\r\n\r\n const popupImages = filtered.map(x => r(x.imageUrl));\r\n const galleryImages = filtered.map(x => ({ imageUrl: r(x.imageUrl), thumbnailUrl: r(set(x.imageUrl, 'thumb')), caption: x.caption }));\r\n // console.log(popupImages)\r\n\r\n function openPopupImage(e, image) {\r\n e.stopPropagation(); e.preventDefault();\r\n const imageUrl = r(image.imageUrl);\r\n const inx = utils.array.findIndex(popupImages, x => x === imageUrl);\r\n setPopupIndex(inx >= 0 ? inx : 0)\r\n setToggler(!toggler)\r\n }\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport cmsUtils from '../../cmsUtils';\r\nimport utils from 'utils'\r\nimport { Gallery } from '@site/gallery/gallery'\r\n\r\nexport function PhotoGallery(props) {\r\n const item = props.item;\r\n //const cmsOption = props.cmsOption || {};\r\n //console.log(cmsOption)\r\n //console.log('item', item);\r\n\r\n const cssClass = utils.classNames('cms_item', 'photoGallery', item.cssClass || item.anchorName || '');\r\n const images = cmsUtils.payload(item, 'ImageUrl') ? cmsUtils.payload(item, 'ImageUrl').split(\"|\") : [];\r\n const galleryImages = images.map(x => ({imageUrl: x, thumbnailUrl: x, caption: null}));\r\n \r\n return (\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { PhotoGallery } from './view/photoGallery';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'PhotoGallery', \r\n itemElt: (item, cmsOption) => \r\n}","import { mq, variables } from '../../../../cssInJs';\n\nexport default {\n noResultText: {\n textAlign: 'center',\n marginTop: '1rem',\n fontWeight: 600,\n },\n product__page__tiles: {\n '&.slider': {\n '.product__tile__item': {\n maxWidth: '370px',\n flexBasis: '100%',\n marginTop: '0px',\n marginBottom: '0px',\n height: '100%',\n },\n '.slick-next:before, .slick-prev:before': {\n color: variables.colorGreen,\n },\n '.slick-prev': mq({\n left: ['-5px', null, '-22px'],\n }),\n '.slick-next': mq({\n right: ['-5px', null, '-22px'],\n }),\n },\n },\n product__page__tiles__container: {\n display: 'flex',\n justifyContent: 'center',\n flexWrap: 'wrap',\n marginTop: '7px',\n marginBottom: '7px',\n margin: 'auto',\n },\n};\n","import { css } from '@emotion/core';\nimport { variables, mq } from '../../../cssInJs';\n\nconst numberOfTiles = [1, 2, 3, 3];\nconst marginTB = [14, 14, 14, 14];\nconst widthPercent = (index) => 100 / numberOfTiles[index] + '%';\nconst linkText = {\n color: '#1a2d13',\n fontSize: '0.8rem',\n '&:hover': {\n color: 'white'\n },\n};\nexport const tileListStyle = {\n tiles: mq({\n display: 'flex',\n justifyContent: 'center',\n flexWrap: 'wrap',\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 margin: 'auto',\n }),\n categoryList: mq({\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 margin: 'auto',\n textAlign: 'center',\n 'div.ff.form-group': {\n '.ff__input': {\n display: 'inline-block',\n marginLeft: '1rem',\n },\n },\n }),\n};\n\nexport const tileStyle = {\n tile: mq({\n padding: '0.5rem',\n maxWidth: [\n widthPercent(0),\n widthPercent(1),\n widthPercent(2),\n widthPercent(3),\n ],\n flexBasis: [\n widthPercent(0),\n widthPercent(1),\n widthPercent(2),\n widthPercent(3),\n ],\n flexGrow: 0,\n flexShrink: 0,\n marginTop: '0.5rem',\n marginBottom: '0.5rem',\n }),\n tileLink: {\n background: variables.colorLightGrey,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: variables.colorLightGreen,\n '.product__tile__bg': {\n transform: 'scale(1.05)',\n },\n '.product__tile__name': {\n color: 'white',\n },\n '.product__tile__des': {\n color: 'white',\n },\n '.product__tile__price' : {\n color: 'white'\n }\n },\n },\n container: {\n boxShadow: '0.5px 1px 2px 0 rgba(0,0,0,.25)',\n paddingLeft: '15px',\n paddingRight: '15px',\n paddingTop: '15px',\n paddingBottom: '20px',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n prdImage: {\n overflow: 'hidden',\n },\n bg: mq({\n paddingTop: ['88%'],\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n transition: 'all 0.3s ease-in-out',\n backgroundColor: '#f7f7f7',\n }),\n name: css(\n linkText,\n mq({\n marginTop: '1rem',\n // marginBottom: '1rem',\n textDecoration: 'none',\n lineHeight: '1.1',\n textAlign: 'center',\n fontSize: '18px',\n fontWeight: '600',\n })\n ),\n des: css(\n linkText,\n mq({\n textDecoration: 'none',\n textAlign: 'center',\n lineHeight: '1.1',\n fontSize: '0.8rem',\n marginTop: '0.5rem',\n flex: '1 0 auto',\n marginBottom: '0.5rem',\n })\n ),\n price: css(\n linkText,\n mq({\n marginTop: '0.2rem',\n textAlign: 'center',\n textDecoration: 'none',\n fontSize: ['1rem', null, '0.8rem'],\n })\n ),\n\n button: css(\n linkText,\n mq({\n marginTop: '0.3rem',\n textAlign: 'center',\n button: {\n fontWeight: '600',\n padding: '10px 30px',\n fontSize: '18px',\n lineHeight: '1',\n letterSpacing: '1px',\n },\n })\n ),\n\n new: {\n position: 'absolute',\n top: '10px',\n right: '10px',\n borderRadius: '50%',\n height: '55px',\n width: '55px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontWeight: '600',\n fontSize: '16px',\n color: 'white',\n backgroundColor: 'rgba(134, 188, 68, 0.6)',\n },\n\n sale: {\n position: 'absolute',\n top: '10px',\n right: '10px',\n borderRadius: '50%',\n height: '55px',\n width: '55px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontWeight: '600',\n fontSize: '16px',\n color: 'white',\n backgroundColor: 'rgba(255, 0, 0, 0.6)',\n },\n\n portal__background: {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n position: 'fixed',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n zIndex: 9998,\n },\n\n portal__popupcontainer: mq({\n position: 'fixed',\n top: '50%',\n left: '50%',\n width: '100%',\n zIndex: '9999',\n transform: 'translate(-50%, -50%)',\n maxWidth: ['95%', null, '800px'],\n }),\n\n related__product__head: {\n textAlign: 'center',\n backgroundColor: 'black',\n position: 'relative',\n\n img: mq({\n width: 'auto',\n height: ['32px', null, '45px'],\n }),\n\n svg: {\n marginTop: '-5px',\n },\n },\n\n related__product__img: {\n minHeight: '400px',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n backgroundColor: 'white',\n img: mq({\n //width : 'auto',\n maxWidth: '100%',\n height: 'auto',\n position: 'absolute',\n //top: '50%',\n left: '50%',\n transform: 'translateX(-50%)',\n paddingTop: ['1rem', null, '1rem'],\n }),\n },\n\n related__product__title: mq({\n fontSize: ['1.3rem', null, '1.5rem'],\n textAlign: 'left',\n marginTop: ['0.5rem', null, '0.5rem'],\n marginBottom: '1rem',\n }),\n\n related__product__contents: mq({\n marginLeft: '0px',\n marginRight: '0px',\n maxHeight: ['500px', null, '640px'],\n overflow: 'auto',\n }),\n\n related__product__desc: {\n fontWeight: '300',\n p: {\n fontSize: '1rem !important',\n fontFamily: variables.familyBase + ' !important',\n marginBottom: '0.5rem !important',\n lineHeight: '1.1 !important',\n },\n },\n};\n","//import { css } from '@emotion/core';\nimport variables from '../../../cssInJs/variables';\nimport { mq } from '../../../cssInJs';\nexport default {\n product__banner: mq({\n // backgroundColor: 'black',\n backgroundImage: 'url(\"/sites/anfc/media/misc/native-food-in-jars.jpg\")',\n height: ['92px', null, '207px'],\n }),\n\n desc: {\n fontWeight: '300',\n p: {\n fontSize: '1rem !important',\n fontFamily: variables.familyBase + ' !important',\n marginBottom: '0.5rem !important',\n lineHeight: '1.1 !important',\n },\n li: {\n fontSize: '1rem !important',\n fontFamily: variables.familyBase + ' !important',\n },\n },\n heroImageContainer: mq({\n position: 'relative',\n }),\n heroImage: mq({\n width: '100%',\n }),\n productPageCol: mq({\n paddingLeft: '20px',\n paddingRight: '20px',\n marginTop: '20px',\n '.add__to__quote': {\n color: variables.colorGreen,\n backgroundColor: 'transparent',\n marginLeft: '1rem',\n svg: {\n color: 'transparent',\n stroke: variables.colorGreen,\n strokeWidth: '2',\n },\n },\n }),\n productFavorite: {\n cursor: 'pointer',\n '&.checked': {\n color: 'red',\n },\n },\n productBreadCrumbs: mq({\n padding: '0px',\n listStyle: 'none',\n marginBottom: '0.5rem',\n display: ['none', null, 'block'],\n li: mq({\n display: 'inline-block',\n marginRight: '1.5rem',\n position: 'relative',\n fontSize: '0.7rem',\n '&:not(:last-child)::after, &.breadCrumb.last-item::after': {\n content: '\">\"',\n position: 'absolute',\n right: '-1rem',\n },\n '&.breadCrumb::after': {\n content: '\"|\"',\n position: 'absolute',\n right: '-1rem',\n },\n }),\n }),\n productViewImageBg: mq({\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n paddingTop: ['80px', '120px'],\n paddingBottom: ['3rem', '2rem'],\n backgroundRepeat: 'no-repeat',\n marginLeft: '5px',\n marginRight: '5px',\n position: 'relative',\n\n '&:not(.current):before': {\n content: '\"\"',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: '0',\n backgroundColor: 'rgba(255,255,255,0.6)',\n },\n }),\n productViewImages: mq({\n marginTop: ['1rem', '2rem'],\n paddingBottom: ['1rem', '2rem'],\n marginLeft: '-5px',\n marginRight: '-5px',\n '.slick-prev, .slick-next': mq({\n transform: 'none',\n top: ['95px', null, '150px'],\n '&:before': {\n color: '#999999',\n },\n }),\n '.slick-prev': {\n left: '150px',\n },\n '.slick-next': {\n right: '150px',\n },\n }),\n\n productView__images__container: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n '.productView__image': mq({\n flex: ['1 0 33.3%', null, '1 0 25%'],\n maxWidth: ['33.3%', null, '25%'],\n //position: 'relative',\n }),\n },\n\n productViewImage: {\n //paddingLeft: '5px',\n //paddingRight: '5px'\n outline: 'none',\n cursor: 'pointer',\n },\n\n productViewShortDes: mq({\n fontSize: ['1rem'],\n textAlign: 'center',\n }),\n\n productViewTitle: mq({\n fontSize: ['1.7rem'],\n textAlign: 'left',\n marginTop: ['2rem', null, '0px'],\n marginBottom: '1rem',\n // color: '#767676',\n }),\n\n product__view__shot__des: mq({\n color: '#8d2b00',\n marginBottom: '1rem',\n fontFamily: '\"futura-pt\",sans-serif',\n lineHeight: '1.1rem',\n }),\n\n addToCartBtn: {\n 'button, .btn': {\n width: '100%',\n backgroundColor: 'black',\n border: '1px solid black',\n fontWeight: 700,\n '&:hover': {\n backgroundColor: 'white',\n color: 'black',\n },\n //transform: 'skewX(-12deg)'\n },\n // 'button.gotocartbtn' : {\n // marginTop: '1rem'\n // }\n },\n priceText: {\n fontSize: '0.8rem',\n },\n socialMedia: {\n '.social-icon-text': {\n fontSize: '0.8rem',\n },\n },\n attributesRow: {\n cursor: 'pointer',\n //marginTop: '0.5rem',\n //marginBottom: '0.5rem',\n paddingTop: '0.2rem',\n paddingBottom: '0.2rem',\n '&:hover': {\n backgroundColor: '#999999',\n color: 'white',\n },\n '.svgContainer svg': {\n transition: 'all 0.5s',\n },\n '.svgContainer.open svg': {\n transform: 'rotate(180deg)',\n },\n },\n\n attrContainer: {\n maxHeight: '0px',\n transition: 'all 0.3s',\n overflow: 'hidden',\n '&.open': {\n maxHeight: '1000px',\n },\n '.form-control:focus': {\n borderColor: 'black',\n boxShadow: 'none',\n },\n '.form-control': {\n paddingTop: '0',\n paddingBottom: '0',\n height: 'calc(1em + .75rem + 2px)',\n },\n },\n\n desktopMobile: {\n '&.mobile': mq({\n display: ['block', 'none'],\n }),\n '&.desk__top': mq({\n display: ['none', 'block'],\n }),\n },\n quoteContainer: {\n marginBottom: '1rem',\n '.quote__text': {\n fontSize: '0.8rem',\n marginBottom: '1rem',\n },\n button: {\n //transform: 'skewX(-12deg)'\n },\n },\n enquiryFormContainer: {\n backgroundColor: 'rgba(0,0,0,0.3)',\n position: 'fixed',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n 'form.contactForm': {\n position: 'absolute',\n width: '100%',\n maxWidth: '900px',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n backgroundColor: 'white',\n //paddingTop: '2rem',\n paddingLeft: '1rem',\n paddingRight: '1rem',\n margin: '0px',\n paddingBottom: '1rem',\n '.closeButton': {\n textAlign: 'right',\n //margin: '1rem 0px',\n cursor: 'pointer',\n //color: 'white',\n marginTop: '0.5rem',\n },\n '.enquireNowText': {\n marginBottom: '0.5rem',\n //color: 'white'\n },\n },\n },\n\n newOptionRow: {\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n },\n\n newOptionStyleContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n\n newOptionStyleItem: {\n flex: '1 0 16%',\n maxWidth: '16%',\n border: '1px solid #ebebeb',\n textAlign: 'center',\n cursor: 'pointer',\n lineHeight: 1,\n fontSize: '0.8rem',\n paddingTop: '0.5rem',\n paddingBottom: '0.4rem',\n fontWeight: 600,\n marginLeft: '-1px',\n marginTop: '-1px',\n height: '50px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n '&.selected': {\n backgroundColor: 'black',\n color: 'white',\n },\n },\n\n productViewPanel: {\n // backgroundColor: 'white',\n backgroundImage: 'url(\"/sites/anfc/media/misc/anfc-back.jpg\")',\n backgroundSize: '100%',\n backgroundRepeat: 'repeat',\n backgroundPosition: '50%',\n //paddingTop : '3rem'\n },\n\n productView__relatedProducts: {\n '.productView__relatedProducts__head__title': {\n textAlign: 'center',\n },\n },\n\n variant__enquire__container: {\n marginTop: '0.5rem',\n marginBottom: '1rem',\n },\n\n variant__enquire__item: {\n marginTop: '0.25rem',\n marginBottom: '0.25rem',\n },\n\n variant__enquire__title: {\n fontWeight: '600',\n },\n\n variant__enquire__options: {\n display: 'flex',\n marginLeft: '-0.5rem',\n marginRight: '-0.5rem',\n },\n\n variant__enquire__option: {\n paddingLeft: '0.5rem',\n paddingRight: '0.5rem',\n },\n\n product__enquiry__form__item: {\n display: 'flex',\n flexDirection: 'column',\n maxHeight: '560px',\n overflow: 'auto',\n },\n\n product__enquiry__form__item__1: {\n display: 'flex',\n paddingTop: '0.25rem',\n paddingBottom: '0.25rem',\n '.product__enquiry__form__item__1__img': {\n maxWidth: '60px',\n },\n '.product__enquiry__form__item__1__titile': {\n marginLeft: '0.5rem',\n fontSize: '0.8rem',\n display: 'flex',\n //justifyContent: 'center',\n //alignItems : 'center',\n maxWidth: '180px',\n lineHeight: '1.1',\n flexDirection: 'column',\n //flexWrap : 'wrap'\n },\n '.product__enquiry__form__item__1__button': {\n flex: '1 0 auto',\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n //textAlign: 'right',\n button: {\n fontSize: '0.8rem',\n },\n },\n },\n\n pdf__viewer__bg: {\n //backgroundColor: 'rgba(0,0,0,0.7)',\n backgroundColor: '#ebebeb',\n position: 'fixed',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n zIndex: '9996',\n },\n\n pdf__viewer__view: {\n position: 'fixed',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n zIndex: '9997',\n '.react-pdf__message.react-pdf__message--error': {\n padding: '0.5rem',\n backgroundColor: 'red',\n color: 'white',\n fontWeight: 700,\n },\n '.react-pdf__Page__annotations.annotationLayer': {\n display: 'none',\n },\n },\n\n pdf__viewer__view__bar: {\n backgroundColor: 'black',\n padding: '1rem',\n color: 'white',\n fontWeight: 700,\n position: 'relative',\n '.pdf__viewer__view__bar__pdf__download': {\n position: 'absolute',\n right: '5px',\n top: '50%',\n transform: 'translateY(-50%)',\n },\n },\n\n pdf__viewer__view__contetns: {\n width: '100%',\n height: '100%',\n position: 'relative',\n overflowX: 'hidden',\n overflowY: 'auto',\n paddingBottom: '3rem',\n },\n\n pdf__viewer__view__contetns__des: {},\n\n pdf__viewer__view__page: {\n paddingTop: '1.5rem',\n backgroundColor: '#ebebeb',\n position: 'relative',\n overflowX: 'auto',\n overflowY: 'hidden',\n },\n pdf__viewer__view__index: {\n position: 'absolute',\n top: '3px',\n left: '10px',\n fontSize: '0.8rem',\n },\n};\n","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport { Fragment, useEffect, useState } from \"react\";\r\nimport env from \"../../../env\";\r\nimport { SiteLink } from \"../../../components\"; //useRouter\r\n//import { useHistory } from \"react-router-dom\";\r\nimport { useForm } from \"../../../form\";\r\nimport { fb, validators } from \"../../../form\";\r\nimport { Button, ErrorMessage } from \"../../../components\";\r\nimport { usePost } from \"../../../components\";\r\nimport utils from \"../../../utils\";\r\nimport style from \"./productViewStyle\";\r\n//import { MdKeyboardArrowDown } from \"react-icons/md\";\r\nimport { useStore } from \"../../../store\";\r\nimport { useAuth } from \"auth\";\r\n//import {ProductAttributes} from './productAttributes';\r\n\r\nexport function AddToCart({\r\n product,\r\n setVariantOptions = null,\r\n setEnquiryFormQty = null,\r\n checkAuth,\r\n}) {\r\n const post = usePost();\r\n //const { Redirect } = useRouter();\r\n //const history = useHistory();\r\n const render = (name, parent = null) => form.renderControl(name, parent);\r\n const model = getFormModel(product, {});\r\n const form = useForm(model, {\r\n usePlaceholder: true,\r\n onControlChanged: onControlChanged,\r\n });\r\n const attributes = form.findControl(\"variantOptions\");\r\n\r\n const [priceItem, setPriceItem] = useState(() => {\r\n return \"AU \" + utils.money.formatMoney(getProductItem());\r\n });\r\n\r\n const [checkGoToCartBtn, setCheckGoToCartBtn] = useState(false);\r\n const { dispatch } = useStore();\r\n const auth = useAuth();\r\n\r\n function getProductItem() {\r\n const elss = [];\r\n if (attributes && attributes.controls.length > 0) {\r\n attributes.controls.forEach((el) => {\r\n elss.push(el.controls[1].value);\r\n });\r\n }\r\n\r\n let _price = 0;\r\n\r\n for (let x in product.variants) {\r\n let checkVariant = true;\r\n for (let y in product.variants[x].variantOptions) {\r\n if (\r\n !elss.toString().includes(product.variants[x].variantOptions[y].value)\r\n ) {\r\n checkVariant = false;\r\n }\r\n if (checkVariant === false) {\r\n break;\r\n }\r\n }\r\n\r\n if (checkVariant === true) {\r\n _price = product.variants[x].price || 0;\r\n break;\r\n }\r\n }\r\n\r\n let _priceResult = (checkAuth === true && product.checkMember === true && product.wholesalePriceIncTax) ? product.wholesalePriceIncTax + _price : product.priceIncTax + _price;\r\n \r\n if(checkAuth === true && product.checkMember === true){\r\n \r\n }\r\n else{\r\n const _quantity = parseInt(form.getValue().quantity); \r\n if(product.productName.toLowerCase().includes('jam') && env.jamDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n else if(product.productName.toLowerCase().includes('paste') && env.pasteDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n else if(product.productName.toLowerCase().includes('relish') && env.relishDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n else if(product.productName.toLowerCase().includes('marmalade') && env.marmaladeDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n else if(product.productName.toLowerCase().includes('syrup') && env.syrupDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n else if(product.productName.toLowerCase().includes('tea') && env.teaDiscountProducts.includes(product.productId) && _quantity >= 4){\r\n _priceResult = 10 + _price;\r\n }\r\n }\r\n\r\n return _priceResult;\r\n }\r\n\r\n function onControlChanged(e, control) {\r\n //if (!(control.type === 'select' && control.parent)) return;\r\n //console.log(\"control.type\", control.type, control.parent);\r\n if (!control.parent) return;\r\n\r\n const formVal = form.getValue();\r\n\r\n if (setVariantOptions !== null) {\r\n let _variantOptions = [];\r\n for (let i in formVal.variantOptions) {\r\n let _item = {\r\n name: formVal.variantOptions[i].name,\r\n value:\r\n formVal.variantOptions[i][\r\n Object.keys(formVal.variantOptions[i])[1]\r\n ],\r\n };\r\n _variantOptions.push(_item);\r\n }\r\n setVariantOptions(_variantOptions);\r\n }\r\n\r\n if (setEnquiryFormQty !== null) {\r\n setEnquiryFormQty(formVal.quantity);\r\n }\r\n\r\n setPriceItem(\"AU \" + utils.money.formatMoney(getProductItem()));\r\n }\r\n\r\n function addToCart(e) {\r\n form.validateForm(e, () => {\r\n const formVal = form.getValue();\r\n let _variantOptions = [];\r\n for (let i in formVal.variantOptions) {\r\n let _item = {\r\n name: formVal.variantOptions[i].name,\r\n value:\r\n formVal.variantOptions[i][\r\n Object.keys(formVal.variantOptions[i])[1]\r\n ],\r\n };\r\n _variantOptions.push(_item);\r\n }\r\n //const value = { ...formVal, productId: product.productId, cartId: env.getDevCartId() };\r\n let _cartId = env.getDevCartId();\r\n const value = {\r\n quantity: formVal.quantity,\r\n variantOptions: _variantOptions,\r\n productId: product.productId,\r\n cartId: _cartId === \"null\" ? null : _cartId,\r\n auth: checkAuth,\r\n };\r\n //console.log('value', value);\r\n post.send(env.apiBase + \"/api/cart/addToCart\", value);\r\n });\r\n }\r\n\r\n if (post.hasErrors()) {\r\n if (\r\n post.errors.length > 0 &&\r\n post.errors[0] === \"Permission, this page will reload\"\r\n ) {\r\n auth.signout().then((user) => {\r\n dispatch({ type: \"SET_STATE\", payload: { authCheck: false } });\r\n dispatch({ type: \"SET_STATE\", payload: { cartInfo: 0 } });\r\n dispatch({ type: 'SET_STATE', payload: { userFirstName : \"\" }});\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 1000);\r\n });\r\n }\r\n }\r\n\r\n if (post.done()) {\r\n env.setDevCartId(post.response.results.cartInfo.cartId);\r\n if (post.response.errors.length < 1) {\r\n setTimeout(() => {\r\n dispatch({\r\n type: \"SET_STATE\",\r\n payload: {\r\n cartInfo:\r\n post.response.results.cartInfo.totalQuantity === 0\r\n ? 0\r\n : post.response.results.cartInfo.totalQuantity - 1,\r\n },\r\n });\r\n setCheckGoToCartBtn(true);\r\n }, 500);\r\n }\r\n\r\n post.reset();\r\n // return \r\n }\r\n\r\n useEffect(() => {\r\n if (setVariantOptions === null) {\r\n return;\r\n }\r\n\r\n const formVal = form.getValue();\r\n let _variantOptions = [];\r\n for (let i in formVal.variantOptions) {\r\n let _item = {\r\n name: formVal.variantOptions[i].name,\r\n value:\r\n formVal.variantOptions[i][Object.keys(formVal.variantOptions[i])[1]],\r\n };\r\n _variantOptions.push(_item);\r\n }\r\n setVariantOptions(_variantOptions);\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n \r\n {/*
\r\n Price: {product.priceText ? product.priceText : 'AU ' + utils.money.formatMoney(product.price)}\r\n
*/}\r\n\r\n {/* */}\r\n \r\n {attributes.controls.length > 0 && (\r\n
\r\n )}\r\n {attributes.controls.map((item, index) => {\r\n return (\r\n
\r\n
{item.controls[0].value}
\r\n\r\n
\r\n {render(item.controls[0].value.toLowerCase(), item)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n\r\n {/* {\r\n product.productStatus !== 0 &&\r\n
\r\n
\r\n
\r\n Quantity\r\n
\r\n {render('quantity')}\r\n
\r\n
\r\n } */}\r\n\r\n {product.productStatus === 0 && (\r\n \r\n \r\n
\r\n All prices shown in AUD\r\n
\r\n
\r\n
\r\n \r\n {/* {product.priceTextOveriding ? product.priceTextOveriding : 'AU ' + utils.money.formatMoney(product.priceIncTax)} */}\r\n {\r\n // (product.priceText && product.priceText !== '') ? product.priceText : (product.priceTextOveriding ? product.priceTextOveriding : 'AU ' + utils.money.formatMoney(product.priceIncTax))\r\n priceItem\r\n }\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
{render(\"quantity\")}
\r\n
\r\n \r\n {checkGoToCartBtn === true && (\r\n \r\n {\" \"}\r\n GO TO CART{\" \"}\r\n \r\n )}\r\n
\r\n
\r\n\r\n
\r\n {/* */}\r\n \r\n \r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction getFormModel(product, formValues /* for reset */) {\r\n const variantAttributes = product.variantAttributes;\r\n const model = fb.group({\r\n //quantity: [formValues.quantity || 1, [validators.Required()], { label: 'Quantity', type: 'number' }],\r\n quantity: [\r\n formValues.quantity || 1,\r\n [validators.Required()],\r\n { label: \"Quantity\", type: \"number\" },\r\n ],\r\n variantOptions: fb.array([]),\r\n });\r\n const variantOptionArray = model.find(\"variantOptions\").controls;\r\n (variantAttributes || []).forEach((attr) => {\r\n variantOptionArray.push(\r\n newVariantAttribute(attr, formValues, product.variants)\r\n );\r\n });\r\n return model;\r\n}\r\n\r\nfunction newVariantAttribute(attr, formValues, variants) {\r\n // const choices = [\r\n // { name: 'Yes, please!', value: 'Yes' },\r\n // { name: 'No, thanks', value: 'No' }\r\n // ]\r\n\r\n const dyName = attr.name.toLowerCase();\r\n const optionsSelected = formValues.variantOptions || [];\r\n const currentSelection = utils.array.find(\r\n optionsSelected,\r\n (x) => attr.name === x.name\r\n );\r\n\r\n const filtered = variants.filter((x) =>\r\n matchVariantOptions(optionsSelected, x.variantOptions, attr.name)\r\n );\r\n const availableOptions = getAvailableOptionValues(filtered, attr.name);\r\n const options = attr.options.map((x) => {\r\n return {\r\n ...x,\r\n ...{ disabled: !availableOptions.some((o) => o === x.value) },\r\n };\r\n });\r\n\r\n // console.log(\"options\", options);\r\n // console.log(\"variants\", variants);\r\n // console.log(\"attr\", attr);\r\n // console.log(\"availableOptions\", availableOptions);\r\n\r\n return fb.group({\r\n name: [attr.name, [], { type: \"hidden\" }],\r\n [dyName]: [\r\n (currentSelection && currentSelection.value) ||\r\n attr.value ||\r\n options[0].value,\r\n [validators.Required()],\r\n {\r\n //label: attr.name,\r\n label: null,\r\n type: \"select\",\r\n //options : choices\r\n options: [...options].map((x) => {\r\n return {\r\n name:\r\n (x.displayName || x.value) +\r\n (x.disabled || false ? \" - not available\" : \"\"),\r\n value: x.value,\r\n disabled: x.disabled || false,\r\n };\r\n }),\r\n },\r\n ],\r\n });\r\n}\r\n\r\nfunction getAvailableOptionValues(variants, name) {\r\n const values = variants\r\n .map((x) => {\r\n const options = x.variantOptions.filter((o) => o.name === name);\r\n return options && options[0].value;\r\n })\r\n .filter((x) => x);\r\n\r\n return Array.from(new Set(values));\r\n}\r\n\r\nfunction matchVariantOptions(\r\n optionsSelected,\r\n optionsInVariant,\r\n currentControlName\r\n) {\r\n //console.log(optionsSelected, optionsInVariant, currentControlName)\r\n for (let i = 0; i < optionsSelected.length; i++) {\r\n let optionSelected = optionsSelected[i];\r\n if (optionSelected.value === \"\") {\r\n // skip match test\r\n continue;\r\n }\r\n if (optionSelected.name === currentControlName) {\r\n // skip match test for the just selected value\r\n continue;\r\n }\r\n let found = false;\r\n for (let j = 0; j < optionsInVariant.length; j++) {\r\n let optionInVariant = optionsInVariant[j];\r\n if (\r\n optionSelected.name === optionInVariant.name &&\r\n optionSelected.value === optionInVariant.value\r\n ) {\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","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport utils from \"../../../utils\";\nimport { SiteLink, useGet } from \"../../../components\";\nimport { tileStyle } from \"./productTileStyle\";\nimport { Fragment, useState, useEffect, useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport env from \"../../../env\";\nimport { AddToCart } from \"../product/addToCart\";\nimport { AiOutlineClose } from \"react-icons/ai\";\n// import { CardImgOverlay } from 'reactstrap';\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 ProductTile({ product, openClikcPopup = false, checkAuth = false }) {\n \n const s = tileStyle;\n const imageUrl = product.thumbnailUrl\n ? utils.site.resourcePath(product.thumbnailUrl)\n : \"/assets/product-empty.png\";\n const [openProductViewPopup, setOpenProductViewPopup] = useState(false);\n const productUrl = product.productUrl\n ? product.productUrl\n : `/product/${product.productSlug}`;\n function openProductViewPopupF() {\n setOpenProductViewPopup(true);\n document.body.style.overflow = \"hidden\";\n }\n function closeProductViewPopupF() {\n setOpenProductViewPopup(false);\n document.body.style.overflow = \"unset\";\n }\n return (\n \n {openProductViewPopup && (\n \n \n \n )}\n
\n {openClikcPopup === false ? (\n \n \n \n ) : (\n {\n openProductViewPopupF();\n }}\n >\n \n
\n )}\n \n
\n );\n}\n\nfunction TileContetns({ product, s, imageUrl, checkAuth }) {\n \n console.log(\"checkAuth ---- \", checkAuth);\n \n const saleCheck = useMemo(() => {\n let checkSale = false;\n if (product.productCategories && product.productCategories.length > 0) {\n for (let i in product.productCategories) {\n if (product.productCategories[i].categoryName === \"On Sale\") {\n checkSale = true;\n break;\n }\n }\n }\n return checkSale;\n }, [product]);\n\n return (\n
\n
\n
\n
\n
\n
\n {product.productName}\n
\n
\n {product.shortDesc}\n
\n\n
\n {product.productStatus !== 0\n ? product.productStatusText\n : product.priceTextOveriding\n ? product.priceTextOveriding\n : \"AU\" + utils.money.formatMoney( checkAuth === true ? ((product.wholesalePriceIncTax && product.wholesalePriceIncTax !== '') ? product.wholesalePriceIncTax : product.priceIncTax ) : product.priceIncTax)}\n
\n\n
\n \n
\n
\n {product && product.checkNew &&
NEW
}\n {product && saleCheck === true &&
SALE
}\n \n );\n}\n\nfunction ProductViewPopup({ s, closeProductViewPopupF, product }) {\n const get = useGet();\n useEffect(() => {\n const url = `/api/product/getProduct/${product.productSlug}`;\n get.send(env.apiBase + url);\n \n // eslint-disable-next-line\n }, []);\n \n const data = get.response;\n\n return (\n \n \n
\n
\n \"logo\"\n \n \n
\n
\n {data ? (\n \n \n \n {/* {`img`} */}\n {`img`}\n \n \n \n \n {data.productName}\n \n \n {data.productStatus === 0 && }\n \n \n ) : (\n \n
Loading ...
\n \n )}\n \n
\n );\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './productPageTilesStyle';\nimport { useEffect, useState } from 'react';\nimport utils from 'utils';\nimport cmsUtils from '../../cmsUtils';\nimport env from '../../../../env';\nimport { Loading } from 'components';\nimport { ProductTile } from '../../../ecm/productList/productTile';\nimport Slider from \"react-slick\";\nimport { Fragment } from 'react';\n\nexport function ProductPageTiles(props) {\n\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const selectedPages = cmsUtils.payload(item, \"SelectedPages\") || '';\n const useSlider = cmsUtils.payload(item, 'UseSlider') || 'default';\n const cssClass = utils.classNames('cms_item', 'product__page__tiles', useSlider, item.cssClass || item.anchorName || '');\n const [pages, setPages] = useState();\n const [searchPedding, setSearchPedding] = useState(true);\n\n useEffect(() => {\n const abortController = new AbortController();\n const signal = abortController.signal;\n const fetchData = async () => {\n const res = await fetch(env.apiBase + \"/api/product/getproductpagetilesitem\", {\n method: 'post',\n signal: signal,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n selectedPages: selectedPages\n })\n });\n const data = await res.json();\n setPages(data);\n setSearchPedding(false);\n };\n fetchData();\n return function cleanup() {\n abortController.abort();\n }\n // eslint-disable-next-line\n }, []);\n\n return (\n
\n {\n searchPedding ? :\n \n {\n useSlider === 'default' ?\n
\n {\n pages.map((item, index) => {\n return (\n \n )\n })\n }\n
: \n\n }\n
\n }\n {\n pages && pages.length < 1 &&\n
Sorry, there are no available results.
\n }\n
\n )\n}\n\nfunction ProductPageTilesWithSlider({ pages }) {\n const settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n fade: false,\n autoplay: true,\n slidesToShow: pages.length >= 4 ? 4 : pages.length,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: pages.length >= 2 ? 2 : pages.length,\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n }\n }\n ]\n };\n\n return (\n \n {\n pages.map((item, index) => {\n return (\n \n )\n })\n }\n \n )\n}","import React from 'react';\r\nimport { ProductPageTiles } from './view/productPageTiles';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'ProductPageTiles', \r\n itemElt: (item, cmsOption) => \r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport { FacebookShareButton, FacebookIcon } from \"react-share\";\r\n// import { LinkedinShareButton, LinkedinIcon } from \"react-share\";\r\n// import { TwitterShareButton, TwitterIcon } from \"react-share\";\r\nimport { WhatsappShareButton, WhatsappIcon } from \"react-share\";\r\nimport { EmailShareButton, EmailIcon } from \"react-share\";\r\n\r\nimport { getShareButtonStyle } from './shareButtonStyle';\r\n\r\nexport function ShareButtons({ shareUrl, pageTitle = null, topLabel = 'SHARE THIS PAGE:' }) {\r\n const s = getShareButtonStyle();\r\n const title = pageTitle || window.document.title;\r\n console.log(title)\r\n return
\r\n {topLabel &&
{topLabel}
}\r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n}\r\n","//import { mq } from '../../cssInJs';\r\n\r\nexport function getShareButtonStyle() {\r\n return {\r\n shareButtons: {\r\n marginTop: '1.5rem',\r\n },\r\n shareButtonTitle: {\r\n fontSize: '0.8rem',\r\n marginLeft: '0.5rem',\r\n marginBottom: '0.3rem'\r\n },\r\n shareButton: {\r\n margin: 5\r\n },\r\n }\r\n} \r\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\n// import cmsUtils from '../../cmsUtils';\r\nimport utils from 'utils'\r\nimport { ShareButtons } from 'site/shareButtons/shareButtons'\r\n\r\nexport function SharingIcons(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n //console.log(cmsOption)\r\n //console.log('item', item);\r\n\r\n const cssClass = utils.classNames('cms_item', item.cssClass || item.anchorName || '');\r\n const shareUrl = utils.site.fullUrl(window.location.pathname + window.location.search)\r\n\r\n return
\r\n \r\n
\r\n}\r\n","import React from 'react';\r\nimport { SharingIcons } from './view/sharingIcons';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'SharingIcons', \r\n itemElt: (item, cmsOption) => \r\n}","import React, { useState, useRef } from 'react';\nimport utils from '../../../utils';\nimport { debounce } from '../../../lib/utils-core/debounce';\nimport * as yt from '../../../lib/youtube/iframeApi';\n// import { FiVolumeX, FiVolume2 } from 'react-icons/fi';\n\nexport function YoutubeNew(props) {\n const youtubeBannerRef = React.useRef(null);\n const [playerStatus, setPlayerStatus] = useState('loading');\n const [playerSize, setPlayerSize] = useState(null);\n // eslint-disable-next-line\n const [ytPlayer, setYtPlayer] = useState(null);\n // const [muted, setMuted] = useState(true);\n const countPlayedRef = useRef(0);\n const { heightSet, videoLinkOrId, playerId } = props.video;\n const videoId = yt.getYoutubeCode(videoLinkOrId);\n const posterImageUrl =\n props.posterImageUrl && props.posterImageUrl !== ''\n ? props.posterImageUrl\n : yt.thumbnailMax(videoId);\n const mobileImageUrl = props.mobileImageUrl;\n const canPlayVideo = () =>\n typeof window !== `undefined` && typeof props.canPlayVideo === `undefined`\n ? window.innerWidth >= 1200\n : !!(typeof props.canPlayVideo === 'function'\n ? props.canPlayVideo()\n : props.canPlayVideo);\n\n const playerVars = {\n enablejsapi: 1,\n //'autoplay': 1,\n controls: 0,\n loop: 1,\n showinfo: 0,\n rel: 0,\n modestbranding: 1,\n //'origin': typeof window !== `undefined` && window.location.origin,\n allowfullscreen: true,\n wmode: 'transparent',\n };\n\n React.useEffect(() => {\n const resized = debounce(() => {\n loadVideo();\n });\n loadVideo();\n if (typeof window !== `undefined`)\n window.addEventListener('resize', resized);\n return () => {\n if (typeof window !== `undefined`)\n window.removeEventListener('resize', resized);\n };\n // eslint-disable-next-line\n }, []);\n\n function loadVideo() {\n if (youtubeBannerRef.current)\n setPlayerSize(getSize(youtubeBannerRef.current, props.sizeCalculator));\n if (canPlayVideo()) {\n yt.loadApi((loadJs) => {\n loadJs ? init() : setTimeout(init, 100);\n });\n }\n }\n\n function init() {\n let player = null;\n if (typeof window !== `undefined`) {\n player = new window.YT.Player(playerId, {\n events: {\n onStateChange: (e) => {\n switch (e.data) {\n // case window.YT.PlayerState.PLAYING:\n // break;\n // case window.YT.PlayerState.PAUSED:\n // break;\n case window.YT.PlayerState.ENDED:\n const countPlayed = countPlayedRef.current;\n if (countPlayed < 3 - 1) {\n console.log('ended', countPlayed + 1);\n countPlayedRef.current = countPlayed + 1;\n if (player && player.playVideo) {\n player.playVideo();\n } else {\n setPlayerStatus('finished');\n }\n } else {\n setPlayerStatus('finished');\n }\n break;\n default:\n }\n },\n onReady: (e) => {\n //console.log('onReady');\n if (player && player.mute && player.playVideo) {\n player.mute();\n player.playVideo();\n }\n setTimeout(() => setPlayerStatus('loaded'), 1000);\n },\n onError: (e) => {\n console.log(e);\n },\n },\n });\n\n setYtPlayer(player);\n }\n }\n\n // function soundToggle(e) {\n // e.preventDefault();\n // e.stopPropagation();\n // if (ytPlayer) {\n // if (muted) {\n // setMuted(false);\n // setTimeout(() => {\n // if (\n // ytPlayer &&\n // ytPlayer.pauseVideo &&\n // ytPlayer.unMute &&\n // ytPlayer.playVideo\n // ) {\n // ytPlayer.pauseVideo();\n // ytPlayer.unMute();\n // ytPlayer.playVideo();\n // }\n // }, 100);\n // } else {\n // setMuted(true);\n // setTimeout(() => {\n // if (\n // ytPlayer &&\n // ytPlayer.pauseVideo &&\n // ytPlayer.unMute &&\n // ytPlayer.playVideo\n // ) {\n // ytPlayer.pauseVideo();\n // ytPlayer.mute();\n // ytPlayer.playVideo();\n // }\n // }, 100);\n // }\n // }\n // //https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\n // }\n\n function getSize(container, sizeCalculator) {\n const containerSize = container\n ? { w: container.offsetWidth, h: container.offsetHeight }\n : { w: window.innerWidth, h: window.innerHeight };\n if (sizeCalculator) {\n const size = sizeCalculator(containerSize, canPlayVideo());\n if (size) return size;\n }\n\n const overSize = 1;\n const rate = 9 / 16;\n const w = containerSize.w * overSize;\n const h = containerSize.h * overSize;\n const size = { width: w, height: w * rate, left: 0, top: 0 };\n if (size.height < h) {\n // stretch horizontally\n size.height = h;\n size.width = h / rate;\n }\n\n //console.log(size)\n size.left = -(size.width - containerSize.w) / 2;\n size.top = -(size.height - containerSize.h) / 2;\n return size;\n }\n\n const canPlay = canPlayVideo();\n const imageUrl = !canPlay && mobileImageUrl ? mobileImageUrl : posterImageUrl;\n return (\n \n \n
\n \n {playerSize && (\n \n )}\n {/* {canPlay && playerStatus === \"loaded\" && (\n
\n {muted ? : }\n
\n )} */}\n \n
\n );\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\n// import React from 'react';\nimport cmsUtils from '../../cmsUtils';\nimport utils from '../../../../utils';\n// import { YoutubeBannerMobilePopup } from '../../../../lib/youtube/youtubeBanner--mobilePopup';\nimport { YoutubeNew } from 'cms/items/youtubeNew/view';\nimport { getStyle } from './videoPanelStyle';\n\nexport function VideoPanel(props) {\n const item = props.item;\n // const cmsOption = props.cmsOption || {};\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\n\n const overlayColor = cmsUtils.payload(item, 'BgColor') || 'transparent';\n const overlayOpacity = cmsUtils.payload(item, 'OverlayOpacity') || '1.0';\n\n const posterFrameUrl = cmsUtils.payload(item, 'PosterFrameUrl', null);\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 const canPlayVideo = () => utils.css.screenWidth() >= 0;\n\n const cssClass = utils.classNames(\n 'cms_item',\n 'youtubePanel',\n item.cssClass || item.anchorName || ''\n );\n\n // const htmlBlock = React.useRef(null);\n // const cssClass2 = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n // const content = cmsUtils.payload(item, 'Content');\n\n const style = getStyle({\n overlayColor: overlayColor,\n overlayOpacity: overlayOpacity,\n });\n // css={style.single__banner__bg}\n\n return (\n \n {/* {canPlayVideo() ? : } */}\n \n \n );\n}\n","import { rgba } from 'polished';\r\n\r\nexport function getStyle({overlayColor, overlayOpacity}){\r\n return{\r\n single__banner__bg : {\r\n '&:before' : {\r\n content: '\"\"',\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n top : '0',\r\n backgroundColor: overlayColor === 'transparent' ? 'transparent' : rgba(overlayColor, parseFloat(overlayOpacity)),\r\n zIndex: '4'\r\n //backgroundColor: rgba(overlayColor, parseFloat(overlayOpacity))\r\n }\r\n }\r\n }\r\n}","function payload(item, key, defaultVal = '') {\r\n const found = item.payloads.find(x => x.key === key);\r\n return found ? found.value : defaultVal;\r\n}\r\n\r\nexport default { payload };","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\n//import React from 'react';\r\nimport { Item } from '../../items/item';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport Slider from \"react-slick\";\r\n\r\nexport function BannerPanel(props) {\r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\r\n const overlayColor = cmsUtils.payload(item, 'BgColor') || 'transparent';\r\n const overlayOpacity = cmsUtils.payload(item, 'OverlayOpacity') || '1.0';\r\n const cmsOption = props.cmsOption ? {...props.cmsOption, overlayColor : overlayColor, overlayOpacity : overlayOpacity } : {};\r\n\r\n const slides = subItems.map((subItem, index) =>\r\n \r\n );\r\n\r\n var settings = {\r\n dots: false,\r\n infinite: true,\r\n speed: 1500,\r\n autoplaySpeed: 3000,\r\n fade: true,\r\n autoplay: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n };\r\n\r\n const cssClass = utils.classNames('cms_item', 'bannerPanel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\r\n\r\n return (\r\n
\r\n \r\n {slides}\r\n \r\n
\r\n );\r\n}","import React from 'react';\r\nimport { VideoPanel } from './view/videoPanel';\r\nimport cmsUtils from '../cmsUtils';\r\nimport { BannerPanel } from '../../../cms/items/bannerPanel/view';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'VideoPanel', \r\n itemElt: (item, cmsOption) => {\r\n const useRBonMobile = cmsUtils.payload(item, 'UseRBonMobile') || 'no';\r\n if(useRBonMobile === 'yes' && window.innerWidth <= 500){\r\n return \r\n }\r\n else{\r\n return \r\n }\r\n }\r\n}","import { mq, variables } from \"../../../../cssInJs\"\r\n\r\nexport default {\r\n wholesale_register_form : {\r\n 'label' : mq({\r\n fontSize: ['1rem',null,'0.9rem']\r\n }),\r\n 'button' : {\r\n backgroundColor: '#8d2b01',\r\n '&:hover' : {\r\n backgroundColor: '#5a1b00'\r\n }\r\n }\r\n },\r\n h_3 : {\r\n fontFamily: variables.familyBase\r\n }\r\n}","import { fb, validators } from \"../../../../lib/form\";\r\n\r\nconst countryList = [{ name: \"Australia\", value: \"Australia\" }];\r\n\r\nconst businessCategories = [\r\n { name: \"Retail Storefront\", value: \"Retail Storefront\" },\r\n { name: \"Retail Online Only\", value: \"Retail Online Only\" },\r\n { name: \"Hospitality\", value: \"Hospitality\" },\r\n { name: \"Gift Store\", value: \"Gift Store\" },\r\n { name: \"Wholesaler\", value: \"Wholesaler\" },\r\n];\r\n\r\nconst estimatedSpendList = [\r\n { name: \"$0-$200 per month\", value: \"$0-$200 per month\" },\r\n { name: \"$201-$500 per month\", value: \"$201-$500 per month\" },\r\n { name: \"$501-$1000 per month\", value: \"$501-$1000 per month\" },\r\n { name: \"$1000+ per month\", value: \"$1000+ per month\" },\r\n];\r\n\r\nexport function getWholesaleRegisterModel(data) {\r\n const model = fb.group({\r\n \r\n billingInfo: address(data.billingAddress),\r\n shippingInfo: addressS(data.shippingAddress),\r\n\r\n firstName: [\r\n data.firstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Authorised Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n },\r\n ],\r\n lastName: [\r\n data.lastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Last Name\",\r\n type: \"text\",\r\n style: { className: \"last_name\" },\r\n forceUsePlaceholder: \"Last Name\",\r\n },\r\n ],\r\n email: [\r\n data.email || \"\",\r\n [validators.Required(), validators.Email()],\r\n { label: \"Email\", type: \"email\", forceUsePlaceholder: \"Enter Email\" },\r\n ],\r\n password: [\r\n data.email || \"\",\r\n [validators.Required()],\r\n { label: \"Password\", type: \"password\", forceUsePlaceholder: \"Password\" },\r\n ],\r\n businessPhone: [\r\n data.businessPhone || \"\",\r\n [validators.Required()],\r\n { label: \"Business Phone:\", type: \"text\" },\r\n ],\r\n\r\n mobilePhone: [\r\n data.mobilePhone || \"\",\r\n [validators.Required()],\r\n { label: \"Mobile Phone:\", type: \"text\" },\r\n ],\r\n\r\n businessName: [\r\n data.businessName || \"\",\r\n [validators.Required()],\r\n { label: \"Business Name:\", type: \"text\" },\r\n ],\r\n\r\n abn: [\r\n data.abn || \"\",\r\n [validators.Required()],\r\n { label: \"ABN:\", type: \"text\" },\r\n ],\r\n\r\n acn: [\r\n data.acn || \"\",\r\n [],\r\n { label: \"ACN:\", type: \"text\" },\r\n ],\r\n\r\n useSameAddress: [\r\n data.useSameAddress || true,\r\n [],\r\n { label: `Same as Business Address`, type: \"checkbox\" },\r\n ],\r\n\r\n businessCategory: [\r\n data.businessCategory || \"Retail Storefront\",\r\n [validators.Required()],\r\n {\r\n label: \"Business Category:\",\r\n type: \"select\",\r\n options: businessCategories,\r\n style: { inline: true },\r\n },\r\n ],\r\n estimatedSpend: [\r\n data.estimatedSpend || \"Retail Storefront\",\r\n [validators.Required()],\r\n {\r\n label: \"Estimated Spend:\",\r\n type: \"select\",\r\n options: estimatedSpendList,\r\n style: { inline: true },\r\n },\r\n ],\r\n checkConditions: [\r\n data.checkConditions || false,\r\n [validators.Required()],\r\n {\r\n label: `I agree to the website terms and conditions.`,\r\n type: \"checkbox\",\r\n },\r\n ],\r\n\r\n });\r\n return model;\r\n}\r\n\r\nexport function address(model) {\r\n const data = model || {};\r\n return fb.group({\r\n addressFirstName: [\r\n data.addressFirstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Billing Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n },\r\n ],\r\n\r\n addressLastName: [\r\n data.addressLastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Billing Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Last Name\",\r\n style: { className: \"last_name\" },\r\n },\r\n ],\r\n\r\n addressEmail: [\r\n data.addressEmail || \"\",\r\n [validators.Required(), validators.Email()],\r\n {\r\n label: \"Billing Email:\",\r\n type: \"email\",\r\n forceUsePlaceholder: \"Enter Email\",\r\n style: { className: \"last_name\" },\r\n },\r\n ],\r\n\r\n address: [\r\n data.address || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Business Address:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Street Address\",\r\n },\r\n ],\r\n city: [\r\n data.city || \"\",\r\n [validators.Required()],\r\n { label: \"City\", type: \"text\" },\r\n ],\r\n state: [\r\n data.state || \"\",\r\n [validators.Required()],\r\n { label: \"State / Province / Region\", type: \"text\" },\r\n ],\r\n postalCode: [\r\n data.postalCode || \"\",\r\n [validators.Required()],\r\n { label: \"ZIP / Postal Code\", type: \"text\" },\r\n ],\r\n country: [\r\n data.country || \"Australia\",\r\n [validators.Required()],\r\n {\r\n label: \"Country\",\r\n type: \"select\",\r\n options: countryList,\r\n style: { inline: true },\r\n },\r\n ]\r\n\r\n });\r\n}\r\n\r\nexport function addressS(model) {\r\n const data = model || {};\r\n return fb.group({\r\n addressFirstName: [\r\n data.addressFirstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n },\r\n ],\r\n\r\n addressLastName: [\r\n data.addressLastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Last Name\",\r\n style: { className: \"last_name\" },\r\n },\r\n ],\r\n\r\n addressEmail: [\r\n data.addressEmail || \"\",\r\n [validators.Required(), validators.Email()],\r\n {\r\n label: \"Shipping Email:\",\r\n type: \"email\",\r\n forceUsePlaceholder: \"Enter Email\",\r\n style: { className: \"last_name\" },\r\n },\r\n ],\r\n\r\n address: [\r\n data.address || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Address:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Street Address\",\r\n },\r\n ],\r\n city: [\r\n data.city || \"\",\r\n [validators.Required()],\r\n { label: \"City\", type: \"text\" },\r\n ],\r\n state: [\r\n data.state || \"\",\r\n [validators.Required()],\r\n { label: \"State / Province / Region\", type: \"text\" },\r\n ],\r\n postalCode: [\r\n data.postalCode || \"\",\r\n [validators.Required()],\r\n { label: \"ZIP / Postal Code\", type: \"text\" },\r\n ],\r\n country: [\r\n data.country || \"Australia\",\r\n [validators.Required()],\r\n {\r\n label: \"Country\",\r\n type: \"select\",\r\n options: countryList,\r\n style: { inline: true },\r\n },\r\n ]\r\n\r\n });\r\n}","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport { Fragment, useState } from \"react\";\r\nimport utils from \"utils\";\r\nimport style from \"./wholesaleRegisterStyle\";\r\nimport { getWholesaleRegisterModel } from \"./wholesaleRegisterModel\";\r\nimport { useForm } from \"../../../../form\";\r\nimport { Button, ErrorMessage, useRouter } from \"../../../../components\";\r\n//import env from \"../../../../env\";\r\nimport { useAuth } from 'auth';\r\nimport { useStore } from '../../../../store';\r\n//import { validators } from \"../../../../lib/form\";\r\n\r\nexport function WholesaleRegister(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n const cssClass = utils.classNames(\r\n \"cms_item\",\r\n \"member_login\",\r\n item.cssClass || item.anchorName || \"\"\r\n );\r\n\r\n const model = getWholesaleRegisterModel({});\r\n const form = useForm(model, {\r\n usePlaceholder: false,\r\n onControlChanged: orderItemChanged,\r\n });\r\n //const post = usePost();\r\n const render = (name) => form.renderControl(name, null);\r\n const [sendingStatus, setSendingStatus] = useState(null);\r\n const [error, setError] = useState(\"\");\r\n const val = form.getValue();\r\n const billingInfo = form.model.find(\"billingInfo\");\r\n const shippingInfo = form.model.find(\"shippingInfo\");\r\n const auth = useAuth();\r\n const router = useRouter();\r\n const { dispatch } = useStore();\r\n\r\n if (shippingInfo) {\r\n shippingInfo.disableValidators = val.useSameAddress;\r\n }\r\n billingInfo.disableValidators = false;\r\n \r\n function orderItemChanged(e, control) {}\r\n\r\n function onSubmit(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n form.validateForm(e, () => {\r\n setSendingStatus(\"pending\");\r\n\r\n const value = { ...form.getValue() };\r\n auth.signupForWholeSale(value).then(user => {\r\n \r\n if(user && user.firstName){\r\n dispatch({type: 'SET_STATE', payload: { userFirstName : user.firstName }});\r\n }\r\n \r\n setSendingStatus(null);\r\n setError('');\r\n router.push('/wholesale-dashboard')\r\n }).catch(error => {\r\n setError(error.message);\r\n setSendingStatus(null);\r\n });\r\n\r\n });\r\n }\r\n\r\n //const data = post.response;\r\n\r\n if (cmsOption.isCmsEdit) {\r\n return (\r\n \r\n \r\n Wholesale Register \r\n \r\n \r\n );\r\n }\r\n\r\n // if (post.done() && sendingStatus === \"pending\"){\r\n // setSendingStatus(null);\r\n // }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
{render(\"firstName\")}
\r\n
{render(\"lastName\")}
\r\n
{render(\"email\")}
\r\n
{render(\"password\")}
\r\n
\r\n\r\n
\r\n
{render(\"businessPhone\")}
\r\n
{render(\"mobilePhone\")}
\r\n
\r\n\r\n

Business Details

\r\n
\r\n\r\n
\r\n
{render(\"businessName\")}
\r\n
{render(\"abn\")}
\r\n
{render(\"acn\")}
\r\n
\r\n\r\n
\r\n\r\n

Shipping/Postal Address:

\r\n
\r\n
{render(\"useSameAddress\")}
\r\n
\r\n\r\n {!val.useSameAddress && (\r\n
\r\n )}\r\n\r\n
\r\n
{render(\"businessCategory\")}
\r\n
{render(\"estimatedSpend\")}
\r\n
\r\n\r\n

Terms and conditions

\r\n
\r\n
{render(\"checkConditions\")}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {/* {post.done() && (\r\n \r\n Successfully sent!\r\n \r\n )} */}\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nfunction Address({ form, addressModel }) {\r\n const render = (name) => form.renderControl(name, addressModel);\r\n return (\r\n \r\n
\r\n
{render(\"addressFirstName\")}
\r\n
{render(\"addressLastName\")}
\r\n
{render(\"addressEmail\")}
\r\n
\r\n\r\n
\r\n
{render(\"address\")}
\r\n
\r\n\r\n
\r\n
{render(\"city\")}
\r\n
{render(\"state\")}
\r\n
{render(\"postalCode\")}
\r\n
{render(\"country\")}
\r\n
\r\n
\r\n );\r\n}","import React from 'react';\r\nimport { WholesaleRegister } from './view/wholesaleRegister';\r\n\r\nexport const renderRule = {\r\n match: (item, cmsOption) => item.itemTypeCode === 'WholesaleRegister', \r\n itemElt: (item, cmsOption) => \r\n}","\nimport { renderRule as bigPanel } from './bigPanel/render';\nimport { renderRule as code_instagram } from './code-instagram/render';\nimport { renderRule as code_subscribe } from './code-subscribe/render';\nimport { renderRule as html } from './html/render';\nimport { renderRule as imagePanel } from './imagePanel/render';\nimport { renderRule as memberLogin } from './memberLogin/render';\nimport { renderRule as pageTiles } from './pageTiles/render';\nimport { renderRule as panel } from './panel/render';\nimport { renderRule as photoGallery } from './photoGallery/render';\nimport { renderRule as productPageTiles } from './productPageTiles/render';\nimport { renderRule as sharingIcons } from './sharingIcons/render';\nimport { renderRule as videoPanel } from './videoPanel/render';\nimport { renderRule as wholesaleRegister } from './wholesaleRegister/render';\nexport const items = [\n bigPanel,\n code_instagram,\n code_subscribe,\n html,\n imagePanel,\n memberLogin,\n pageTiles,\n panel,\n photoGallery,\n productPageTiles,\n sharingIcons,\n videoPanel,\n wholesaleRegister,\n]","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\n//import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { SiteLink } from '../../../components';\r\nimport { getStyle } from './style';\r\n\r\nexport function BannerItem(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n \r\n const overlayColor = (props && props.cmsOption && props.cmsOption.overlayColor) || 'transparent';\r\n const overlayOpacity = (props && props.cmsOption && props.cmsOption.overlayOpacity) || '1.0';\r\n\r\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\r\n\r\n const smallCaptionTop = cmsUtils.payload(item, 'SmallCaptionTop') || \"\";\r\n const bigCaptionMiddle = cmsUtils.payload(item, 'BigCaptionMiddle') || \"\";\r\n const smallCaptionBottom = cmsUtils.payload(item, 'SmallCaptionBottom') || \"\";\r\n\r\n const captionButton = cmsUtils.payload(item, 'CaptionButton') && cmsUtils.payload(item, 'CaptionButton') !== \"\" ? cmsUtils.payload(item, 'CaptionButton') : \"\";\r\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\r\n const vAlign = cmsUtils.payload(item, 'VAlign') || \"50%\";\r\n \r\n const cssClass = utils.classNames('cms_item', 'banner-item', 'bannerSize', item.cssClass || item.anchorName || '');\r\n const style = getStyle({overlayColor : overlayColor, overlayOpacity : overlayOpacity, vAlign : vAlign});\r\n\r\n return (\r\n
\r\n {\r\n (linkUrl && linkUrl !== '') ?\r\n \r\n \r\n :\r\n \r\n }\r\n
\r\n );\r\n\r\n}\r\n\r\nfunction BannerItemContetns({ smallCaptionTop, bigCaptionMiddle, smallCaptionBottom, captionButton }) {\r\n return (\r\n
\r\n {\r\n smallCaptionTop && smallCaptionTop !== '' &&\r\n
\r\n {smallCaptionTop}\r\n
\r\n }\r\n {\r\n bigCaptionMiddle && bigCaptionMiddle !== '' &&\r\n
\r\n {bigCaptionMiddle}\r\n
\r\n }\r\n {\r\n smallCaptionBottom && smallCaptionBottom !== '' &&\r\n
\r\n {smallCaptionBottom}\r\n
\r\n }\r\n {\r\n captionButton && captionButton !== '' &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n}","//import { variables, mq } from 'cssInJs';\r\nimport { rgba } from 'polished';\r\n\r\nexport function getStyle({overlayColor, overlayOpacity, vAlign}){\r\n return{\r\n single__banner__bg : {\r\n '&:before' : {\r\n content: '\"\"',\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n top : '0',\r\n backgroundColor: overlayColor === 'transparent' ? 'transparent' : rgba(overlayColor, parseFloat(overlayOpacity))\r\n //backgroundColor: rgba(overlayColor, parseFloat(overlayOpacity))\r\n },\r\n backgroundPosition: `50% ${vAlign === 'center' ? '50%' : vAlign}`\r\n }\r\n }\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport { Item } from '../../items/item';\r\nimport utils from '../../../utils';\r\n\r\nexport function Panel(props) {\r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item, subItems);\r\n \r\n const bgColor = cmsUtils.payload(item, 'BgColor');\r\n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\r\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\r\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\r\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\r\n //console.log(bgTheme)\r\n\r\n\r\n let bgUrl = null;\r\n if (imageUrl)\r\n bgUrl = utils.site.resourcePath(imageUrl);\r\n else if (backgroundTile)\r\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\r\n\r\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '');\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {subItemsElts}\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useLayoutEffect, useRef } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\n\r\nimport { useRouter } from '../../../components';\r\n\r\nimport { handleElementLink } from '../../../components';\r\nimport env from '../../../env';\r\n\r\n//import { Document, Page } from 'react-pdf'\r\n//import { Document, Page } from 'react-pdf/dist/entry.webpack';\r\n\r\nexport function Html(props) {\r\n const ver = env.ver;\r\n const item = props.item;\r\n //const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n const { history } = useRouter();\r\n //const [ pdfViewPath, setPdfViewPath ] = React.useState(null)\r\n //console.log('item', item, cmsOption);\r\n\r\n const year = (new Date()).getFullYear();\r\n let content = cmsOption.isCmsEdit? \r\n cmsUtils.payload(item, 'Content'): \r\n cmsUtils.payload(item, 'Content')\r\n .replace(/__year__/g, year)\r\n .replace(\"__version__\", \" PWA \"+ ver +\"\");\r\n\r\n\r\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n\r\n //let itemElt = (
);\r\n\r\n function handleClick(e) {\r\n \r\n let target = \"\";\r\n if(e.target.closest('a')){\r\n target = e.target.closest('a').getAttribute('target');\r\n }\r\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\r\n //const link = utils.url.getLinkFromElement(e.target);\r\n //console.log('clicked', e, e.target, processed);\r\n \r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n history.push(processed.linkInfo.url)\r\n } else {\r\n //e.preventDefault();\r\n //e.stopPropagation();\r\n // setPdfViewPath(utils.site.resourcePath(link))\r\n\r\n if(e.target.closest('a')){\r\n let href = e.target.closest('a').getAttribute('href') + \"\";\r\n if(href.indexOf('#') !== -1){\r\n let _href = href.split('#');\r\n console.log(\"_href\", _href);\r\n let el = document.querySelector('section[data-cms-item-anchor=\"' + _href[1] + '\"]');\r\n let anchorStatus = el.getAttribute('data-anchor-status');\r\n if(anchorStatus === \"collapse\"){\r\n el.setAttribute('data-anchor-status', 'expand');\r\n el.classList.add(\"expand\");\r\n }\r\n else{\r\n el.setAttribute('data-anchor-status', 'collapse');\r\n el.classList.remove(\"expand\");\r\n }\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n }\r\n\r\n }\r\n }\r\n //console.log(pdfViewPath)\r\n const pdfView = \r\n // pdfViewPath ? \r\n // : \r\n null;\r\n\r\n const htmlBlock = useRef(null);\r\n // function iframeSizer() {\r\n // //console.log('iframesizer')\r\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\r\n // //console.log('iframesizer', iframesContainer)\r\n // if (iframesContainer && iframesContainer.length) {\r\n // iframesContainer.forEach(element => {\r\n // let height = (element.parentElement.offsetWidth * 9) / 16\r\n // //console.log(height, element.parentElement.offsetWidth)\r\n // element.style.height = height + 'px';\r\n // });\r\n // }\r\n // }\r\n\r\n\r\n useLayoutEffect(() => {\r\n //console.log(cmsOption.isCmsEdit)\r\n if (!cmsOption.isCmsEdit || cmsOption.cmsViewMode === 'viewonly') {\r\n replaceEmbedCodes(htmlBlock.current, cmsOption);\r\n }\r\n \r\n const buttons = htmlBlock.current.querySelectorAll('.button');\r\n for (let i = 0; buttons && i < buttons.length; i++) {\r\n restructureButton(buttons[i])\r\n }\r\n\r\n // iframeSizer();\r\n // window.addEventListener('resize', iframeSizer)\r\n // return (): void => {\r\n // window.removeEventListener('resize', iframeSizer)\r\n // }\r\n\r\n }, [cmsOption])\r\n\r\n return (\r\n <>\r\n
handleClick(e)}>
\r\n {pdfView}\r\n \r\n )\r\n}\r\n\r\n\r\nfunction restructureButton(el) {\r\n if (!el.querySelector('span')) {\r\n const span = document.createElement('span');\r\n span.innerHTML = el.innerHTML;\r\n el.innerHTML = '';\r\n el.appendChild(span);\r\n }\r\n}\r\n\r\n\r\nfunction replaceEmbedCodes(block, cmsOption) {\r\n const embedDataList = cmsOption?.pageData?.embedDataList;\r\n const embedCodes = block.querySelectorAll('[data-embed-jaba]')\r\n embedCodes.forEach(embed => {\r\n const id = embed.getAttribute(\"data-embed-jaba\");\r\n const found = utils.array.find(embedDataList, x => x.id === id);\r\n if (found){\r\n //console.log(found)\r\n ReactDOM.render(
, embed);\r\n }\r\n })\r\n //console.log(embedCodes, embedDataList)\r\n}\r\n\r\n","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\n\r\nexport function ImagePanel(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n //console.log(cmsOption)\r\n //console.log('item', item);\r\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\r\n \r\n const cssClass = utils.classNames('cms_item', 'imagePanel', 'parallax', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\r\n \r\n const bgUrl = cmsOption.pageOptions && cmsOption.pageOptions.imagePath ?\r\n utils.site.resourcePath(cmsOption.pageOptions.imagePath):\r\n utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\r\n\r\n const htmlBlock = React.useRef(null);\r\n const cssClass2 = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n const content = cmsUtils.payload(item, 'Content');\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","//import { css, keyframes } from '@emotion/core'\n//import { variables, mq } from 'cssInJs'\n\n//import { css } from '@emotion/core'\nimport { mq, variables } from '../../../cssInJs';\n\nexport default {\n pageTiles__big: mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px',\n marginLeft: ['-10px', '-20px', '-30px', '-40px', '-50px', '-60px'],\n marginRight: ['-10px', '-20px', '-30px', '-40px', '-50px', '-60px'],\n overflow: 'hidden',\n }),\n pageTile__big: mq({\n flex: ['1 0 100%', null, '1 0 50%', '1 0 25%'],\n maxWidth: ['100%', null, '50%', '25%'],\n padding: '10px',\n paddingLeft: '1rem',\n paddingRight: '1rem',\n }),\n pageTile__big__content: {\n '&:hover': {\n textDecoration: 'none',\n '.pageTile__big__wrapper': {\n backgroundColor: variables.colorLightGreen,\n },\n '.pageTile__big__bg': {\n transform: 'scale(1.05)',\n },\n '.pageTile__big__title': {\n color: 'white',\n },\n },\n },\n pageTile__big__wrapper: {\n boxShadow: '0.5px 1px 2px 0 rgba(0,0,0,.25)',\n padding: '0.4rem',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: variables.colorLightGrey,\n height: '100%',\n transition: 'all .2s',\n },\n pageTile__big__bg: {\n paddingTop: '65.25%',\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n transition: 'all .2s',\n },\n pageTile__big__title: {\n textAlign: 'center',\n fontSize: '1.3rem',\n color: variables.colorGreen,\n marginTop: '0.5rem',\n lineHeight: '1',\n flex: '1 0 auto',\n maxWidth: '90%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n pageTile__big__middle__text: {\n color: '#767676',\n textAlign: 'center',\n marginTop: '0.5rem',\n fontSize: '0.7rem',\n fontWeight: '600',\n },\n pageTile__big__button: {\n textAlign: 'center',\n marginTop: '1rem',\n marginBottom: '1rem',\n button: {\n fontWeight: '600',\n padding: '10px 24px',\n fontSize: '0.8rem',\n lineHeight: '1',\n letterSpacing: '1px',\n },\n // 'button' : {\n // backgroundColor: variables.colorGreen,\n // color : 'white',\n // borderColor: variables.colorGreen\n // }\n },\n};\n","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\n\nexport function PageTilesBsyc(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const pageTileElts = pages.map((page, index) => (\n \n ));\n const cssClass = utils.classNames(\n 'cms_item',\n 'pageTiles__big',\n item.cssClass || item.anchorName || ''\n );\n\n return (\n \n {pageTileElts}\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
\n
\n \n {page.pageTitle}\n \n \n \n \n \n \n \n );\n}\n","import { mq, variables } from '../../../cssInJs';\r\n\r\n// export default {\r\n// pageTiles__big: {\r\n// display: 'flex',\r\n// justifyContent: 'flex-start',\r\n// flexWrap: 'wrap',\r\n// margin: '2rem -10px',\r\n// overflow: 'hidden'\r\n// },\r\n// pageTile__big: mq({\r\n// flex: ['1 0 100%',null,'1 0 25%'],\r\n// maxWidth:['100%', null, '25%'],\r\n// padding: '10px',\r\n// }),\r\n// pageTile__big__content : {\r\n// '&:hover' : {\r\n// textDecoration: 'none',\r\n// '.pageTile__big__bg' : {\r\n// transform : 'scale(1.05)'\r\n// }\r\n// }\r\n// },\r\n// pageTile__big__wrapper : {\r\n// boxShadow: '2px 2px 6px 0px rgba(0,0,0,0.25)',\r\n// padding : '0.4rem',\r\n// overflow: 'hidden'\r\n// },\r\n// pageTile__big__bg : {\r\n// paddingTop: '100%',\r\n// backgroundPosition: 'center',\r\n// backgroundSize: 'cover',\r\n// backgroundRepeat: 'no-repeat',\r\n// transition:'all .2s'\r\n// },\r\n// pageTile__big__title : {\r\n// textAlign: 'center',\r\n// fontSize: '36px',\r\n// color: variables.fontColor,\r\n// marginTop: '0.5rem'\r\n// },\r\n// pageTile__big__middle__text : {\r\n// color: variables.fontColor,\r\n// textAlign: 'center',\r\n// marginTop: '0.5rem'\r\n// },\r\n// pageTile__big__button : {\r\n// textAlign: 'center',\r\n// marginTop: '0.5rem',\r\n// // 'button' : {\r\n// // backgroundColor: variables.colorGreen,\r\n// // color : 'white',\r\n// // borderColor: variables.colorGreen\r\n// // }\r\n// }\r\n// }\r\n\r\nexport default {\r\n pageTiles__small: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n flexWrap: 'wrap',\r\n margin: '2rem -10px',\r\n overflow: 'hidden',\r\n '&.slider' : {\r\n display : 'block',\r\n overflow: 'unset',\r\n '.slick-prev:before, .slick-next:before' : {\r\n color: 'black'\r\n },\r\n '.slick-prev' : mq({\r\n left: ['0px',null,'-22px']\r\n }),\r\n '.slick-next' : mq({\r\n right: ['0px',null,'-22px']\r\n })\r\n } \r\n },\r\n pageTile__small: mq({\r\n flex: ['1 0 100%', null, '1 0 50%', '1 0 33.3%', '1 0 20%'],\r\n maxWidth: ['100%', null, '50%', '33.3%', '20%'],\r\n padding: '10px',\r\n '&.slider' : {\r\n //flex : '1 0 100%',\r\n maxWidth : '100%',\r\n height : '100%'\r\n }\r\n }),\r\n pageTile__small__wrapper: {\r\n boxShadow: '0.5px 1px 2px 0 rgba(0,0,0,.25)',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n backgroundColor: variables.colorLightGrey,\r\n transition:'all .2s'\r\n },\r\n pageTile__small__content: {\r\n '&:hover': {\r\n textDecoration: 'none',\r\n '.pageTile__small__bg': {\r\n transform: 'scale(1.05)'\r\n },\r\n '.pageTile__small__title' : {\r\n color : 'white'\r\n },\r\n '.pageTile__small__wrapper' : {\r\n backgroundColor : variables.colorLightGreen\r\n },\r\n }\r\n },\r\n pageTile__small__title: mq({\r\n fontSize: ['32px',null,'23px'],\r\n lineHeight: '1.1',\r\n padding: '0.5rem 0.5rem',\r\n //flex: '1 0 auto',\r\n color : variables.colorGreen,\r\n minHeight: '72px',\r\n fontWeight : '600',\r\n maxWidth : '84%'\r\n }),\r\n pageTile__small__bg: {\r\n paddingTop: '56.25%',\r\n backgroundPosition: 'center',\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n transition: 'all .2s'\r\n },\r\n pageTile__small__des: {\r\n fontSize: '18px',\r\n lineHeight: 1.2,\r\n padding: '0.5rem 0.5rem',\r\n color: variables.colorLightGrey,\r\n flex: '1 0 auto',\r\n },\r\n pageTile__small__button: {\r\n padding: '0rem 0.5rem 0.5rem',\r\n 'button': {\r\n //backgroundColor: 'transparent',\r\n \r\n //color: variables.fontColor,\r\n //borderColor: variables.colorDarkGray,\r\n \r\n fontWeight: '600',\r\n padding : '14px 30px',\r\n fontSize : '18px',\r\n lineHeight: '1',\r\n letterSpacing: '1px'\r\n }\r\n }\r\n}","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport Slider from 'react-slick';\n\nexport function PageTilesSmall(props) {\n const item = props.item;\n //const detailHoverBgColor = props.detailHoverBgColor ? props.detailHoverBgColor : \"black\";\n const cmsOption = props.cmsOption || {};\n const useSlider = cmsUtils.payload(item, 'UseSlider') || 'default';\n\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const pageTileElts = pages.map((page, index) => (\n \n ));\n\n //const cssClass = utils.classNames('cms_item', 'pageTiles tiles', item.cssClass || item.anchorName || '');\n const cssClass = utils.classNames(\n 'cms_item',\n 'pageTiles__small',\n useSlider,\n item.cssClass || item.anchorName || ''\n );\n\n const settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n fade: false,\n autoplay: true,\n slidesToShow: pages.length >= 5 ? 5 : pages.length,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: pages.length >= 3 ? 3 : pages.length,\n },\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n };\n\n return (\n \n {useSlider && useSlider === 'slider' ? (\n {pageTileElts}\n ) : (\n pageTileElts\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 //const colorTheme = page.colorTheme;\n //const index = props.idx;\n\n return (\n \n \n \n
\n
\n \n\n \n {page.pageTitle}\n \n\n \n {page.tileDesc}\n \n\n \n \n \n \n \n \n );\n}\n","import { css } from '@emotion/core'\nimport { mq } from '../../../cssInJs'\n\nexport default {\n pageTiles: css(mq({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px',\n overflow: 'hidden',\n //border:'1px solid red'\n marginLeft: ['-10px', null, null, null, '-2rem', '-5.5rem'],\n marginRight: ['-10px', null, null, null, '-2rem', '-5.5rem']\n })),\n pageTile__third: css(mq({\n // flex:['0 0 1000%',null,'0 0 88%'],\n // maxWidth:['100%',null,'88%'],\n flex: ['0 0 1000%', null, '0 0 100%'],\n maxWidth: ['100%', null, '100%'],\n padding: '10px',\n paddingTop: '3rem',\n zIndex: 1,\n //marginLeft: 'auto',\n\n '&:nth-of-type(even)': {\n marginLeft: 'auto',\n '.pageTile__third__bg': mq({\n order: ['0', null, '2'],\n }),\n '.pageTile__third__content__details': mq({\n order: '1'\n })\n },\n '&:nth-of-type(1)': {\n paddingTop: '10px'\n }\n })),\n\n pageTile__third__content: css({\n '&:hover': {\n textDecoration: 'none',\n '& .pageTile__third__content__details': {\n //color: 'white',\n backgroundColor: '#212121',\n '& .pageTile__third__title': {\n color: 'white',\n },\n '& .pageTile__third__desc': {\n color: 'white',\n },\n '& .pageTile__third__dot': {\n borderTopColor: 'white'\n }\n\n // '&.default' : css({\n // backgroundColor: 'rgba(0,113,188,1)'\n // }),\n // '&.red' : css({\n // backgroundColor: 'rgba(211,61,2,1)'\n // }),\n // '&.green' : css({\n // backgroundColor: 'rgba(0, 146, 69,1)'\n // })\n },\n '& .pageTile__third__bg2': {\n //transform: scale(1.05)\n //transform : 'scale(1.05)'\n }\n }\n }),\n\n tile__flip__wrapper__third: css(mq({\n zIndex: '-1',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: ['center', null, 'space-between'],\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n flexWrap: 'wrap',\n alignItems: 'center'\n })),\n\n pageTile__third__bg: css(mq({\n //height: '0',\n //paddingTop: ['50%','35%','45%'],\n //height: ['284px',null,null,'448px'],\n height: ['230px', null, null, '490px'],\n flex: '1 1 300px',\n overflow: 'hidden',\n position: 'relative',\n boxShadow: '3px 5px 10px rgba(0,0,0,0.3)'\n })),\n\n pageTile__third__bg2: css(mq({\n height: '100%',\n //backgroundPosition: '50%',\n //backgroundRepeat: 'no-repeat',\n //backgroundSize: 'cover',\n overflow: 'hidden',\n //transition:'all .2s',\n position: 'absolute',\n top: '0px',\n width: '100%',\n '.slick-next, .slick-prev': {\n display: 'none !important',\n },\n // '&.even' : mq({\n // '.slick-next' : mq({\n // right: '70px',\n // display:'none',\n // })\n // }),\n // '&.odd' : mq({\n // '.slick-prev' : mq({\n // left: '70px',\n // display:'none',\n // })\n // })\n })),\n\n pageTile__third__bg2__inner: css(mq({\n backgroundPosition: '50%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n width: '100%',\n //paddingTop:['70%', '65%', '60%']\n height: ['232px', null, null, '492px']\n })),\n\n pageTile__third__content__details: css(mq({\n overflow: 'hidden',\n flexGrow: '1',\n textAlign: 'center',\n width: '100%',\n bottom: '0',\n backgroundColor: '#8DC73F',\n\n // '&.orange' : css({\n // backgroundColor: variables.orangeColor\n // }),\n\n // '&.blie' : css({\n // backgroundColor: variables.blieColor\n // }),\n\n // '&.green' : css({\n // backgroundColor: variables.greenColor\n // }),\n\n // '&.yellow ' : css({\n // backgroundColor: variables.yellowColor\n // }),\n\n\n\n flex: ['1 1 300px', null, '1 1 400px'],\n maxWidth: ['300px', null, '400px'],\n\n height: ['unset', null, '75%'],\n transition: 'all .2s ease-in-out',\n //color: variables.fontColor,\n position: 'relative',\n marginTop: ['-20px', null, '0px'],\n boxShadow: '3px 5px 10px rgba(0,0,0,0.3)',\n //marginLeft: ['0px',null,'-50px'],\n '&.even': mq({\n marginLeft: ['0px', null, '-50px'],\n marginRight: 'unset'\n }),\n '&.odd': mq({\n marginRight: ['0px', null, '-50px'],\n marginLeft: 'unset'\n }),\n '& .pageTile__third__container': mq({\n //position: 'absolute',\n position: ['static,', null, 'absolute'],\n top: '50%',\n left: '50%',\n transform: ['none', null, 'translate(-50%, -50%)'],\n width: ['100%', null, '76%'],\n padding: ['1rem', null, '0px'],\n '& .pageTile__third__title': {\n //fontFamily: 'proxima-soft, sans-serif',\n fontSize: '1.2rem',\n textTransform: 'uppercase',\n fontWeight: '700',\n lineHeight: '1',\n margin: '0',\n //paddingTop: '.5rem',\n paddingBottom: '.5rem',\n color: '#212121'\n },\n '& .pageTile__third__dot': {\n //borderTopStyle: 'dashed',\n width: '67%',\n marginTop: '0px',\n marginBottom: '0px',\n paddingBottom: '0.5rem',\n borderTopColor: '#212121'\n },\n '& .pageTile__third__desc': {\n lineHeight: '1.4',\n fontSize: '0.9rem',\n //color: '#3d3d3d',\n minHeight: '70px',\n color: '#212121'\n }\n })\n })\n )\n}","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\nimport Slider from \"react-slick\";\n\nexport function PageTilesThird(props) {\n const item = props.item;\n //const detailHoverBgColor = props.detailHoverBgColor ? props.detailHoverBgColor : \"black\";\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\n const pageTileElts = pages.map((page, index) =>\n \n );\n\n //const cssClass = utils.classNames('cms_item', 'pageTiles tiles', item.cssClass || item.anchorName || '');\n const cssClass = utils.classNames('cms_item', 'pageTiles__third', item.cssClass || item.anchorName || '');\n\n return (\n
\n {pageTileElts}\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 const colorTheme = page.colorTheme === 'default' ? 'orange' : page.colorTheme;\n\n const sliderImgs = (page.bottomImageUrl && page.bottomImageUrl !== '') ? page.bottomImageUrl.split(\"|\") : [];\n\n //const sliderImgs = [\"https://dummyimage.com/640x360/333333/fff\"];\n\n if(imageUrl && imageUrl !== ''){\n sliderImgs.unshift(imageUrl);\n }\n \n const index = props.idx;\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: true,\n autoplay: true,\n //autoplay: false,\n slidesToShow: 1,\n slidesToScroll: 1\n };\n\n const mobile = utils.css.screenWidth() <= 550;\n\n const slides = sliderImgs.map((item, index) =>\n
\n
\n
\n );\n\n return (\n \n
\n \n \n
\n
\n {/*
*/}\n
\n \n {slides}\n \n
\n
\n \n
\n
\n \n {\n (page.pageTitle && page.pageTitle !== '') &&\n
\n {page.pageTitle}\n
\n }\n\n
\n\n
\n {page.tileDesc || page.description}\n
\n
\n
\n\n
\n
\n
\n )\n}","import { mq } from '../../../cssInJs';\n\nexport default {\n pageTiles__fourth: {\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px',\n overflow: 'hidden',\n '&.slider': {\n display: 'block',\n overflow: 'unset',\n '.slick-prev:before, .slick-next:before': {\n color: 'black',\n },\n '.slick-prev': mq({\n left: ['0px', null, '-22px'],\n }),\n '.slick-next': mq({\n right: ['0px', null, '-22px'],\n }),\n },\n },\n pageTile__fourth: mq({\n flex: ['1 0 100%', null, '1 0 50%', '1 0 33.3%', '1 0 20%'],\n maxWidth: ['100%', null, '50%', '33.3%', '20%'],\n padding: '10px',\n '&.slider': {\n maxWidth: '100%',\n height: '100%',\n },\n }),\n pageTile__fourth__wrapper: {\n boxShadow: '0.5px 1px 2px 0 rgba(0,0,0,.25)',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n backgroundColor: 'rgb(222,212,191)',\n },\n pageTile__fourth__content: {\n '&:hover': {\n textDecoration: 'none',\n '.pageTile__fourth__bg': {\n transform: 'scale(1.05)',\n },\n },\n },\n pageTile__fourth__title: mq({\n fontSize: ['32px', null, '23px'],\n lineHeight: '1.1',\n padding: '0.5rem 0.5rem',\n color: 'rgb(26,45,19)',\n fontWeight: '600',\n maxWidth: '100%',\n textAlign: 'center',\n }),\n pageTile__fourth__bg: {\n paddingTop: '56.25%',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n transition: 'all .2s',\n },\n pageTile__fourth__des: {\n fontSize: '0.9rem',\n fontFamily: '\"Roboto Condensed\",sans-serif',\n lineHeight: 1.2,\n padding: '0.5rem 0.5rem',\n color: 'rgb(26,45,19)',\n flex: '1 0 auto',\n fontWeight: '400',\n paddingBottom: '1rem',\n },\n pageTile__fourth__button: {\n padding: '0rem 0.5rem 0.5rem',\n textAlign: 'center',\n button: {\n fontWeight: '600',\n padding: '10px 24px',\n fontSize: '0.8rem',\n lineHeight: '1',\n letterSpacing: '1px',\n },\n },\n};\n","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../..';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport Slider from 'react-slick';\n\nexport function PageTilesFourth(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const useSlider = cmsUtils.payload(item, 'UseSlider') || 'default';\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const pageTileElts = pages.map((page, index) => (\n \n ));\n const cssClass = utils.classNames(\n 'cms_item',\n 'pageTiles__fourth',\n useSlider,\n item.cssClass || item.anchorName || ''\n );\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: false,\n autoplay: false,\n slidesToShow: 3,\n slidesToScroll: 2,\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 ],\n };\n\n return (\n \n {useSlider && useSlider === 'slider' ? (\n {pageTileElts}\n ) : (\n pageTileElts\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\n return (\n \n \n \n
\n
\n \n\n \n {page.pageTitle}\n \n\n \n {page.tileDesc}\n \n\n \n \n \n \n \n \n );\n}\n","import { css } from '@emotion/core';\nimport { mq } from '../../../cssInJs';\n\nexport default {\n pageTiles: css({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px',\n overflow: 'hidden',\n }),\n pageTile__tile: css(\n mq({\n flex: '0 0 100%',\n maxWidth: '100%',\n padding: '10px',\n zIndex: 1,\n '&:nth-of-type(even)': {\n '.pageTile__fifth__bg': mq({\n order: ['0', null, '2'],\n }),\n '.pageTile__fifth__content__details': mq({\n order: '1',\n }),\n },\n })\n ),\n tile__content: css({\n '&:hover': {\n textDecoration: 'none',\n '& .pageTile__fifth__content__details': {\n color: 'white',\n backgroundColor: 'rgb(81, 94, 67)',\n },\n '& .pageTile__fifth__bg2': {\n transform: 'scale(1.05)',\n },\n '& .pageTile__fifth__content__details .pageTile__fifth__container .pageTile__fifth__title':\n {\n color: 'white',\n },\n '& .pageTile__fifth__content__details .pageTile__fifth__container .pageTile__fifth__desc':\n {\n color: 'white',\n },\n },\n }),\n tile__flip__wrapper: css({\n zIndex: '-1',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n flexWrap: 'wrap',\n }),\n tile__bg: css(\n mq({\n height: '0',\n paddingTop: ['50%', '35%', '30%'],\n flex: '1 1 300px',\n overflow: 'hidden',\n position: 'relative',\n })\n ),\n tile__bg2: css(\n mq({\n height: '100%',\n backgroundPosition: '50%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n transition: 'all .2s',\n position: 'absolute',\n top: '0px',\n width: '100%',\n })\n ),\n tile__details: css({\n overflow: 'hidden',\n flexGrow: '1',\n textAlign: 'center',\n width: '100%',\n bottom: '0',\n backgroundColor: 'rgb(222, 212, 191)',\n flex: '1 1 300px',\n transition: 'all .2s ease-in-out',\n color: 'white',\n position: 'relative',\n '& .pageTile__fifth__container': mq({\n position: ['static,', null, 'absolute'],\n top: '50%',\n left: '50%',\n transform: ['none', null, 'translate(-50%, -50%)'],\n width: ['100%', null, '90%'],\n padding: ['1rem', null, '0px'],\n '& .pageTile__fifth__title': {\n fontSize: '1.3rem',\n fontWeight: '700',\n lineHeight: '1',\n margin: '0',\n paddingTop: '.5rem',\n paddingBottom: '1.2rem',\n color: 'rgb(26, 45, 19)',\n fontFamily: '\"Roboto Condensed\",sans-serif',\n },\n '& .pageTile__fifth__desc': {\n lineHeight: '1.3',\n fontSize: '.9rem',\n minHeight: '70px',\n color: 'rgb(26, 45, 19)',\n fontWeight: 400,\n marginBottom: '1rem',\n fontFamily: '\"Roboto Condensed\",sans-serif',\n },\n }),\n }),\n};\n","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../..';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\n\nexport function PageTilesFifth(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const pageTileElts = pages.map((page, index) => (\n \n ));\n const cssClass = utils.classNames(\n 'cms_item',\n 'pageTiles__fifth',\n item.cssClass || item.anchorName || ''\n );\n\n return (\n \n {pageTileElts}\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 const index = props.idx;\n\n return (\n
\n \n
\n \n
\n
\n \n
\n {page.pageTitle && page.pageTitle !== '' && (\n
{page.pageTitle}
\n )}\n
\n {page.tileDesc || page.description}\n
\n
\n LEARN MORE\n
\n
\n \n \n \n \n );\n}\n","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\n//import { SiteLink } from '../../../components';\r\n\r\nexport function SingleBanner(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item);\r\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\r\n const alignV = cmsUtils.payload(item, 'AlignV') || '50%';\r\n\r\n const cssClass = utils.classNames('cms_item', 'single-banner', 'banner-item', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\r\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\r\n\r\n //const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\r\n //const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\r\n\r\n // const titlePanel = captionTitle ? (\r\n // linkUrl ? (\r\n //
\r\n //
) : (
)\r\n // ) : null;\r\n\r\n return (\r\n
\r\n {/* {titlePanel && \r\n
{titlePanel}\r\n
} */}\r\n
\r\n );\r\n\r\n\r\n}\r\n","import React from 'react';\r\nimport env from '../../../env';\r\nimport { usePost } from '../../../components';\r\nimport { useForm } from '../../../form';\r\nimport { Button, ErrorMessage } from '../../../components';\r\nimport { getContactModel } from './contactFormModel';\r\nimport { gtm } from '../../../lib/tracking';\r\n\r\nexport function Contact(props) {\r\n\r\n const emailReceiver = props.emailReceiver;\r\n const fileAttachment = props.fileAttachment || 'false';\r\n const mailchimpApiKey = props.mailchimpApiKey;\r\n const mailchimpAudienceKey = props.mailchimpAudienceKey;\r\n \r\n const model = getContactModel({});\r\n const form = useForm(model, { usePlaceholder: true });\r\n const [sendingStatus, setSendingStatus] = React.useState(null);\r\n const [mailChimpError, setMailChimpError] = React.useState();\r\n const post = usePost();\r\n\r\n const mailChimpErrorMemo = React.useMemo(() => {\r\n return mailChimpError\r\n }, [mailChimpError]);\r\n\r\n // function onSubmit(e) {\r\n // setMailChimpError(null);\r\n // form.validateForm(e, () => {\r\n // const value = { \r\n // ...form.getValue(),\r\n // emailReceiver: emailReceiver,\r\n // mailchimpApiKey : mailchimpApiKey,\r\n // mailchimpAudienceKey : mailchimpAudienceKey\r\n // };\r\n // var files = form.getFiles();\r\n // var formData = new FormData();\r\n // formData.append('jsonData', JSON.stringify(value))\r\n // files.forEach(file => {\r\n // (file.files || []).forEach(uploadFile => {\r\n // formData.append(file.name, uploadFile)\r\n // })\r\n // });\r\n // //post.send(env.apiBase + \"/api/contact/send\", value);\r\n // post.sendFormData(env.apiBase + \"/api/contact/send\", formData);\r\n // setSendingStatus('pending')\r\n // })\r\n\r\n // console.log('submitting')\r\n // }\r\n\r\n function onSubmit(e) {\r\n setMailChimpError(null);\r\n form.validateForm(e, () => {\r\n window.grecaptcha.ready(function () {\r\n window.grecaptcha.execute(env.reCaptchaSiteKey, { action: 'submit' }).then(function (token) {\r\n\r\n const value = {\r\n ...form.getValue(),\r\n emailReceiver: emailReceiver,\r\n mailchimpApiKey: mailchimpApiKey,\r\n mailchimpAudienceKey: mailchimpAudienceKey,\r\n grecaptchaToken : token\r\n };\r\n \r\n var files = form.getFiles();\r\n var formData = new FormData();\r\n formData.append('jsonData', JSON.stringify(value))\r\n files.forEach(file => {\r\n (file.files || []).forEach(uploadFile => {\r\n formData.append(file.name, uploadFile)\r\n })\r\n });\r\n post.sendFormData(env.apiBase + \"/api/contact/send\", formData);\r\n setSendingStatus('pending');\r\n\r\n });\r\n });\r\n })\r\n }\r\n\r\n // if (status === 'done') {\r\n // //navigate(`/task/view/${taskId}`)\r\n // window.location.reload();\r\n // }\r\n\r\n if (post.done() && sendingStatus === 'pending') {\r\n var value = form.getValue();\r\n gtm.sendEvent('contactFormSubmitted', {contactEmail: value.email} )\r\n form.reset(model);\r\n setSendingStatus(null);\r\n\r\n if(post.response.results && (post.response.results.MailChimpError && post.response.results.MailChimpError !== \"\")){\r\n setMailChimpError(\"Mail Chimp Error : \" + post.response.results.MailChimpError);\r\n }\r\n }\r\n\r\n const render = (name) => form.renderControl(name, null);\r\n\r\n return (\r\n
\r\n
\r\n
{render('name')}
\r\n
{render('phone')}
\r\n
{render('email')}
\r\n
\r\n
\r\n
{render('enquiry')}
\r\n
\r\n\r\n { fileAttachment === 'true' &&\r\n
\r\n
{render('attachments')}
\r\n
\r\n }\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {post.done() && Successfully sent!}\r\n
\r\n
\r\n
\r\n\r\n
\r\n );\r\n}","import { fb, validators } from '../../../lib/form';\r\n\r\nexport function getContactModel(data) {\r\n const model = fb.group({\r\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\r\n phone: [data.phone || '', [validators.Required()], { label: 'Phone', type: 'text' }],\r\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\r\n enquiry: [data.enquiry || '', [validators.Required()], { label: 'Your Message', type: 'textarea' }],\r\n attachments: [data.attachments || '', [], { label: 'Attachments', type: 'file' }]\r\n }); \r\n return model;\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { Contact } from './contactForm';\r\n\r\nexport function ContactForm(props) {\r\n const item = props.item;\r\n console.log('item', item);\r\n //const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item, cmsOption);\r\n\r\n const emailReceiver = cmsUtils.payload(item, 'EmailReceiver');\r\n const fileAttachment = cmsUtils.payload(item, 'FileAttachment') || \"false\";\r\n\r\n const mailchimpApiKey = cmsUtils.payload(item, 'MailchimpApiKey');\r\n const mailchimpAudienceKey = cmsUtils.payload(item, 'MailchimpAudienceKey');\r\n\r\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n\r\n //let itemElt = (
);\r\n\r\n return (\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n )\r\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 \r\n const existingScript = document.getElementById('youtubeIframeApJaba');\r\n\r\n if(existingScript){\r\n if(window.YT){\r\n setTimeout(init, 100);\r\n }\r\n else{\r\n let checkInterTime = 0;\r\n const checkYoutubeIframeApJabaScript = setInterval(() => {\r\n console.log(\"checkYoutubeIframeApJabaScript\", checkInterTime);\r\n if(window.YT){\r\n setTimeout(init, 100);\r\n clearInterval(checkYoutubeIframeApJabaScript);\r\n }\r\n\r\n if(checkInterTime >= 10){\r\n clearInterval(checkYoutubeIframeApJabaScript);\r\n }\r\n checkInterTime ++;\r\n }, 100);\r\n }\r\n }\r\n else{\r\n yt.loadApi((loadJs) => {\r\n loadJs ? init() : setTimeout(init, 100)\r\n })\r\n }\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 console.log(\"window.YT.PlayerState.ENDED----\", playerId);\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 console.log(\"window.YT.PlayerState.ENDED----finished\");\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';\r\n// import { Item } from '../../items/item';\r\n// import { SiteLink } from 'shared/link/siteLink';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { YoutubeBannerMobilePopup } from '../../../lib/youtube/youtubeBanner--mobilePopup';\r\n//import env from '../../../env';\r\n//import Slider from 'modules/slider/slider';\r\n//import {BannerPanel} from '../bannerPanel/view';\r\n\r\nexport function VideoPanel(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item);\r\n\r\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\r\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\r\n const playerId = 'ytBanner-' + (item.itemId).substr(0, 8);\r\n\r\n const video = {\r\n heightSet: heightSet,\r\n videoLinkOrId: videoCode,\r\n playerId: playerId\r\n }\r\n\r\n //const enableYoutube = env.isProd;\r\n const canPlayVideo = () => utils.css.screenWidth() >= 1200\r\n\r\n const cssClass = utils.classNames('cms_item', 'youtubePanel', item.cssClass || item.anchorName || '');\r\n\r\n //console.log(window.innerWidth, canPlayVideo())\r\n\r\n return (\r\n
\r\n {/* {canPlayVideo() ? : } */}\r\n \r\n
\r\n );\r\n}\r\n\r\n// function MobileSlider(props) {\r\n// const item = props.item;\r\n// const subItems = item.items || [];\r\n \r\n// const slides = subItems.map((subItem, index) =>\r\n// \r\n// );\r\n\r\n// useLayoutEffect(() => {\r\n// setTimeout(() => {\r\n// console.log(window.innerWidth);\r\n// const slider = new Slider('.contSlider');\r\n// slider.init();\r\n// }, 100)\r\n// }, [])\r\n\r\n// return (\r\n//
\r\n// {slides}\r\n//
\r\n// );\r\n// }\r\n\r\n// function SlideItem(props){\r\n// const item = props.item;\r\n// const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\r\n\r\n// return (\r\n//
\r\n// \"Banner\"\r\n//
\r\n// );\r\n\r\n// }","import React from 'react';\r\nimport env from '../../env';\r\nimport { SiteLink} from '../../components';\r\nimport { usePost } from '../../components';\r\nimport { ErrorPopup, Loading } from '../../components';\r\nimport { useRouter } from '../../components';\r\nimport { ProductTile } from '../ecm/productList/productTile';\r\nimport utils from '../../utils';\r\n\r\nexport function SearchResult(props) {\r\n const { query } = useRouter();\r\n const post = usePost();\r\n const keyword = query.q;\r\n //console.log(keyword);\r\n\r\n React.useEffect(() => {\r\n post.send(env.apiBase + '/api/search/search', { keyword: keyword });\r\n // eslint-disable-next-line\r\n }, [keyword]);\r\n\r\n if (post.loading()) {\r\n return \r\n } else if (post.hasErrors()) {\r\n return \r\n }\r\n\r\n const data = post.response;\r\n const products = data.products;\r\n const pages = data.pages;\r\n \r\n if (products.length === 0 && pages.length === 0) return (\r\n
\r\n No result found.\r\n
\r\n )\r\n return (\r\n <>\r\n {products.length > 0 &&
\r\n {/*

Products

*/}\r\n \r\n
}\r\n {pages.length > 0 &&
\r\n {/*

Pages

*/}\r\n \r\n
}\r\n \r\n );\r\n}\r\n\r\nfunction ProductList({ products }) {\r\n return (\r\n
\r\n {products.map((product, index) =>\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nfunction PageList({ pages }) {\r\n return (\r\n
\r\n {pages.map((page, index) =>\r\n
\r\n
\r\n \r\n
\r\n
\r\n {page.pageTitle}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport cmsUtils from '../../cms/utils/cmsUtils';\r\nimport { useEffect } from 'react';\r\n//import style from './style';\r\n\r\nexport function TextWithJavScript(props){\r\n \r\n const item = props.item;\r\n const cssClass = props.cssClass;\r\n const code = cmsUtils.payload(item, 'Code') || '';\r\n\r\n const javaScriptCode = code.substring(code.indexOf(\"\") + 9)).trim();\r\n const nonjavaScriptCode = code.replace(javaScriptCode, '').trim();\r\n console.log('nonjavaScriptCode', nonjavaScriptCode);\r\n\r\n useEffect(() => {\r\n \r\n const javaScriptTopCode = javaScriptCode.substring(javaScriptCode.indexOf(\"\") + 1)).trim();\r\n const javaScriptInsideCode = javaScriptCode.substring((javaScriptCode.indexOf(\">\") + 1), (javaScriptCode.indexOf(\"\"))).trim();\r\n\r\n const script = document.createElement('script');\r\n script.type = `text/javascript`;\r\n \r\n if(javaScriptInsideCode !== ''){\r\n script.text = javaScriptInsideCode;\r\n }\r\n\r\n if(javaScriptTopCode.includes(\"src=\")){\r\n let _src = javaScriptTopCode.indexOf('src=\"') === -1 ? '' : javaScriptTopCode.substring(javaScriptTopCode.indexOf('src=\"')).trim();\r\n let src = _src.substring((_src.indexOf('src=\"') + 5), _src.indexOf('\"',5));\r\n script.src = src;\r\n }\r\n\r\n if(javaScriptTopCode.includes(\"async\")){\r\n script.async = true;\r\n }\r\n\r\n if(javaScriptTopCode.includes(\"defer\")){\r\n script.defer = true;\r\n }\r\n\r\n if(javaScriptTopCode.includes(\"onload=\")){\r\n \r\n let _functionName = javaScriptTopCode.substring(javaScriptTopCode.indexOf('onload=') + 8);\r\n let functionName = _functionName.substring(0, _functionName.indexOf('\"')-1).replace('()','');\r\n script.onload = function(){\r\n window[functionName]();\r\n };\r\n }\r\n\r\n document.body.appendChild(script);\r\n }, [javaScriptCode]);\r\n\r\n return(\r\n
\r\n
\r\n )\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport cmsUtils from '../../cms/utils/cmsUtils';\r\nimport { useLayoutEffect } from 'react';\r\n//import style from './style';\r\n\r\nexport function JotformIframe(props) {\r\n\r\n const item = props.item;\r\n const cssClass = props.cssClass;\r\n const code = cmsUtils.payload(item, 'Code') || '';\r\n\r\n const javaScriptCode = code.substring(code.indexOf(\"<_script\"), (code.indexOf(\"\") + 10)).trim();\r\n const nonjavaScriptCode = code.replace(javaScriptCode, '').trim();\r\n\r\n useLayoutEffect(() => {\r\n\r\n const existingScript = document.getElementById('jotformIframe');\r\n if (existingScript) {\r\n document.body.removeChild(existingScript);\r\n }\r\n\r\n const javaScriptInsideCode = javaScriptCode.substring((javaScriptCode.indexOf(\">\") + 1), (javaScriptCode.indexOf(\"\"))).trim();\r\n\r\n const script = document.createElement('script');\r\n script.type = `text/javascript`;\r\n script.text = javaScriptInsideCode;\r\n script.id = 'jotformIframe';\r\n\r\n document.body.appendChild(script);\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n
\r\n {nonjavaScriptCode && nonjavaScriptCode !== '' &&
}\r\n
\r\n )\r\n}","export default {\r\n jotform__lightbox__container : {\r\n 'a' : {\r\n cursor: 'pointer'\r\n }\r\n }\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport cmsUtils from '../../cms/utils/cmsUtils';\r\nimport { useEffect, useLayoutEffect, useState } from 'react';\r\nimport { Loading } from '../../components';\r\nimport style from './style';\r\n\r\nexport function JotformLightbox(props) {\r\n\r\n const item = props.item;\r\n const cssClass = props.cssClass;\r\n const code = cmsUtils.payload(item, 'Code') || '';\r\n const codes = code.split(\"\");\r\n\r\n const [result, setResult] = useState();\r\n console.log(\"codes --->\", codes);\r\n\r\n useEffect(() => {\r\n\r\n const javsScriptCodes = [];\r\n let nonjavaScriptCode = \"\";\r\n let index = 1;\r\n\r\n codes.forEach(code => {\r\n\r\n if (code.includes(\"<_script\")) {\r\n const script = document.createElement('script');\r\n script.type = `text/javascript`;\r\n script.id = 'jotformLightbox' + index;\r\n\r\n const javaScriptTopCode = code.substring(code.indexOf(\"<_script\"), (code.indexOf(\">\") + 1)).trim().replace(\"src =\", \"src=\").replace(\"src = \", \"src=\").replace(\"src= \", \"src=\").trim();\r\n const javaScriptInsideCode = code.substring((code.indexOf(\">\") + 1)).trim();\r\n\r\n console.log(\"javaScriptTopCode\", javaScriptTopCode);\r\n\r\n if (javaScriptTopCode.includes(\"src=\")) {\r\n let _src = javaScriptTopCode.indexOf('src=\"') === -1 ? '' : javaScriptTopCode.substring(javaScriptTopCode.indexOf('src=\"')).trim();\r\n let src = _src.substring((_src.indexOf('src=\"') + 5), _src.indexOf('\"', 5));\r\n script.src = src;\r\n }\r\n\r\n if (javaScriptInsideCode !== '') {\r\n script.text = javaScriptInsideCode;\r\n }\r\n javsScriptCodes.push(script);\r\n }\r\n else {\r\n nonjavaScriptCode = code.trim();\r\n }\r\n\r\n index++;\r\n\r\n });\r\n\r\n setResult({ javsScriptCodes: javsScriptCodes, nonjavaScriptCode: nonjavaScriptCode });\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n
\r\n {\r\n result ? : \r\n }\r\n
\r\n )\r\n}\r\n\r\n\r\nfunction GetJotformLightbox({ result }) {\r\n\r\n const javsScriptCodes = result.javsScriptCodes;\r\n const nonjavaScriptCode = result.nonjavaScriptCode;\r\n const [index, setIndex] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n\r\n if (!javsScriptCodes || (javsScriptCodes && javsScriptCodes.length <= 0)) {\r\n return;\r\n }\r\n\r\n const existingScript = document.getElementById(javsScriptCodes[index].id);\r\n if (existingScript) {\r\n document.body.removeChild(existingScript);\r\n }\r\n document.body.appendChild(javsScriptCodes[index]);\r\n\r\n let timer = null;\r\n\r\n if (javsScriptCodes.length > (index + 1)) {\r\n timer = setTimeout(() => {\r\n setIndex(index + 1);\r\n }, 1000);\r\n }\r\n\r\n return () => {\r\n if(timer){\r\n clearTimeout(timer);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [index]);\r\n\r\n return (\r\n
\r\n )\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { SearchResult } from '../../../site/searchResult/searchResult';\r\nimport { InstagramFeed } from '../../../components';\r\nimport { AppVersion } from '../../../components';\r\nimport { TextWithJavScript } from '../../../components/TextWithJavaScript/view';\r\nimport { JotformIframe } from '../../../components/jotformIframe/view';\r\nimport { JotformLightbox } from '../../../components/jotformLightbox/view';\r\n\r\nexport function Code(props) {\r\n const item = props.item;\r\n //const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item, cmsOption);\r\n\r\n const code = cmsUtils.payload(item, 'Code');\r\n const codeType = cmsUtils.payload(item, 'CodeType');\r\n let controls = null;\r\n if (codeType === 'Json') {\r\n const codeJson = JSON.parse(code);\r\n if (codeJson.control === 'search-results') {\r\n controls = \r\n } else if (codeJson.control === 'app') {\r\n controls = \r\n } else if (codeJson.control === 'instagram') {\r\n controls = \r\n }\r\n }\r\n\r\n const cssClass = utils.classNames('cms_item', item.cssClass || item.anchorName || '');\r\n\r\n //let itemElt = (
);\r\n\r\n if (cmsOption.isCmsEdit)\r\n return (\r\n
\r\n
\r\n          Code Type: {codeType}\r\n          {code}
\r\n
\r\n )\r\n else if (codeType === 'Text')\r\n return (\r\n
\r\n )\r\n else if (codeType === 'TestWithJs') {\r\n return (\r\n \r\n )\r\n }\r\n else if (codeType === 'JotformIframe')\r\n return (\r\n \r\n )\r\n else if (codeType === 'JotformLightbox')\r\n return (\r\n \r\n )\r\n else\r\n return (\r\n
{controls}
\r\n )\r\n}\r\n","import { mq, variables } from '../../../cssInJs';\r\n\r\nexport default {\r\n pageTiles__small: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n flexWrap: 'wrap',\r\n margin: '2rem -10px',\r\n overflow: 'hidden',\r\n '&.slider' : {\r\n display : 'block',\r\n overflow: 'unset',\r\n '.slick-prev:before, .slick-next:before' : {\r\n color: 'black'\r\n },\r\n '.slick-prev' : {\r\n left: '-22px'\r\n },\r\n '.slick-next' : {\r\n right: '-22px'\r\n }\r\n } \r\n },\r\n pageTile__small: mq({\r\n flex: ['1 0 100%', null, '1 0 50%', '1 0 33.3%', '1 0 25%'],\r\n maxWidth: ['100%', null, '50%', '33.3%', '25%'],\r\n padding: '10px',\r\n '&.slider' : {\r\n //flex : '1 0 100%',\r\n maxWidth : '100%',\r\n height : '100%'\r\n }\r\n }),\r\n pageTile__small__wrapper: {\r\n boxShadow: '0.5px 1px 2px 0 rgba(0,0,0,.25)',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n backgroundColor: 'rgb(222, 212, 191)'\r\n },\r\n pageTile__small__content: {\r\n '&:hover': {\r\n textDecoration: 'none',\r\n color : 'white',\r\n '.pageTile__big__inner__title' : {\r\n color : 'white'\r\n },\r\n '.pageTile__small__inner__des' : {\r\n color : 'white'\r\n },\r\n '.pageTile__small__wrapper' : {\r\n backgroundColor: 'rgb(81, 94, 67)',\r\n },\r\n '.pageTile__small__bg': {\r\n transform: 'scale(1.05)'\r\n }\r\n }\r\n },\r\n pageTile__small__title: mq({\r\n fontSize: ['32px',null,'23px'],\r\n lineHeight: '1.1',\r\n padding: '0.5rem 0.5rem',\r\n //flex: '1 0 auto',\r\n color : variables.fontColor,\r\n minHeight: '72px',\r\n fontWeight : '600',\r\n maxWidth : '84%',\r\n '.pageTile__big__inner__title' : {\r\n textOverflow: 'ellipsis',\r\n display : '-webkit-box',\r\n WebkitLineClamp: '2',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden',\r\n }\r\n }),\r\n pageTile__small__bg: {\r\n paddingTop: '56.25%',\r\n backgroundPosition: 'center',\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n transition: 'all .2s'\r\n },\r\n pageTile__small__des: {\r\n fontSize: '18px',\r\n lineHeight: 1.2,\r\n padding: '0.5rem 0.5rem',\r\n color: variables.fontColor,\r\n flex: '1 0 auto',\r\n '.pageTile__small__inner__des' : {\r\n textOverflow: 'ellipsis',\r\n display : '-webkit-box',\r\n WebkitLineClamp: '5',\r\n WebkitBoxOrient: 'vertical',\r\n overflow: 'hidden',\r\n }\r\n },\r\n pageTile__small__button: {\r\n padding: '0rem 0.5rem 0.5rem',\r\n 'button': {\r\n //backgroundColor: 'transparent',\r\n \r\n //color: variables.fontColor,\r\n //borderColor: variables.colorDarkGray,\r\n \r\n fontWeight: '600',\r\n padding : '14px 30px',\r\n fontSize : '18px',\r\n lineHeight: '1',\r\n letterSpacing: '1px'\r\n }\r\n }\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { SiteLink } from '../../../components';\r\n\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport style from './style';\r\n\r\nexport function BlogPosts(props) {\r\n\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item);\r\n\r\n const posts = getPages(cmsUtils.payload(item, 'BlogPosts'));\r\n const numOfTileLines = parseInt(cmsUtils.payload(item, 'NumOfTileLines', '2'));\r\n //console.log(numOfPost, parseInt(numOfPost));\r\n //console.log(posts);\r\n const bp = utils.ui.getCurrentBreakpoint();\r\n const tilesPerLine = { xs: 1, sm: 1, md: 2, lg: 2, xl: 3, xxl: 4 }\r\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 3);\r\n const step = numOfPost;\r\n\r\n const [tilesToShow, setTilesToShow] = React.useState(numOfPost);\r\n\r\n const displayingPosts = posts.length > tilesToShow ? posts.slice(0, tilesToShow) : posts;\r\n const showMore = posts.length > displayingPosts.length;\r\n\r\n const pageTileElts = displayingPosts.map((page, index) =>\r\n \r\n );\r\n\r\n const cssClass = utils.classNames('cms_item', 'blogTiles tiles', item.cssClass || item.anchorName || '');\r\n\r\n return (\r\n <>\r\n
\r\n {pageTileElts}\r\n
\r\n {showMore && (
\r\n { setTilesToShow(tilesToShow + step) }}>LOAD MORE
)}\r\n \r\n );\r\n}\r\n\r\nfunction getPages(pagesSerialized) {\r\n if (pagesSerialized) {\r\n return JSON.parse(pagesSerialized);\r\n }\r\n return [];\r\n}\r\n\r\nfunction Tile(props) {\r\n const page = props.page;\r\n const imageUrl = utils.site.resourcePath(page.imageUrl);\r\n const disableLink = props.disableLink;\r\n //const postDate = utils.date.formatDDMMYYYY(page.postDate);\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {page.pageTitle}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {page.tileDesc}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n )\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\n\r\nexport function BlogPostTitle(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item);\r\n\r\n const title = cmsUtils.payload(item, 'PageTitle');\r\n const postDate = cmsUtils.payload(item, 'PostDate');\r\n\r\n const cssClass = utils.classNames('blogView__titleContainer', 'cms_item', item.cssClass || item.anchorName || '');\r\n\r\n return (\r\n
\r\n

\r\n \r\n {title}\r\n \r\n

\r\n
\r\n {postDate}\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\n//import cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { Item } from '../../items/item';\r\n\r\nexport function VideoHolder(props) {\r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n //console.log('item', item, subItems);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n\r\n const cssClass = utils.classNames('cms_item', 'videoHolder', item.cssClass || item.anchorName || '');\r\n\r\n return (\r\n
\r\n {subItemsElts}\r\n
\r\n );\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { YoutubeEmbedPopup } from '../../../components';\r\n\r\nexport function VideoItem(props) {\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n\r\n console.log('item', item);\r\n\r\n const youtubeCode = cmsUtils.payload(item, 'YoutubeCode');\r\n const posterFrameUrl = cmsUtils.payload(item, 'PosterFrameUrl');\r\n const captionTitleYoutube = cmsUtils.payload(item, 'CaptionTitleYoutube');\r\n const shortDesc = cmsUtils.payload(item, 'ShortDesc');\r\n\r\n const cssClass = utils.classNames('cms_item', 'videoItem', item.cssClass || item.anchorName || '');\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{captionTitleYoutube}

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import React from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport { Item } from '../../items/item';\r\nimport utils from '../../../utils';\r\n\r\nexport function MultiColumnPanel(props){\r\n const item = props.item;\r\n const mobileReverse = cmsUtils.payload(item, 'MobileReverse', 'no');\r\n //const subItems = item.items || [];\r\n const subItems = (mobileReverse === \"yes\" && utils.css.screenWidth() <= 550) ? item.items.reverse() || [] : item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n const columnWidths = cmsUtils.payload(item, 'ColumnWidths').split(\",\");\r\n const mobileColumnWidths = cmsUtils.payload(item, 'MobileColumnWidths').split(\",\");\r\n const countItem = {countD : 0, countM : 0, col : \"\"};\r\n\r\n const bgColor = cmsUtils.payload(item, 'BgColor');\r\n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\r\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\r\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\r\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\r\n \r\n let bgUrl = null;\r\n if (imageUrl)\r\n bgUrl = utils.site.resourcePath(imageUrl);\r\n else if (backgroundTile)\r\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\r\n\r\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'multiColumnPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || ''); \r\n\r\n function setupClass(index){ \r\n countItem.col = \"\";\r\n if(columnWidths.length === countItem.countD){\r\n countItem.countD = 0;\r\n }\r\n\r\n if(mobileColumnWidths.length === countItem.countM){\r\n countItem.countM = 0;\r\n }\r\n \r\n countItem.col = \"col-sm\" + (columnWidths[countItem.countD] === \"13\" ? \"\" : \"-\" + columnWidths[countItem.countD]) + \" col-\" + mobileColumnWidths[countItem.countM];\r\n countItem.countD ++;\r\n countItem.countM ++;\r\n };\r\n\r\n const subItemsElts = subItems.map((subItem, index) => {\r\n setupClass();\r\n return
\r\n \r\n
\r\n } \r\n );\r\n return (\r\n
\r\n
\r\n
\r\n {subItemsElts}\r\n
\r\n
\r\n
\r\n );\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport { FaChevronDown } from \"react-icons/fa\";\r\nimport React, { useLayoutEffect, useRef } from 'react';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { useRouter } from '../../../components';\r\nimport { handleElementLink } from '../../../components';\r\nimport env from '../../../env';\r\n\r\nexport function ExpandableHtml(props) {\r\n const cmsOption = props.cmsOption || {};\r\n const [open, setOpen] = React.useState(cmsOption.isCmsEdit);\r\n const ver = env.ver;\r\n const item = props.item;\r\n //const subItems = item.items || [];\r\n const { history } = useRouter();\r\n //console.log('item', item, cmsOption);\r\n //console.log(open)\r\n let content = cmsOption.isCmsEdit? \r\n cmsUtils.payload(item, 'Content'): \r\n cmsUtils.payload(item, 'Content').replace(\"__version__\", \" PWA \"+ ver +\"\");\r\n\r\n const buttonTitle = cmsUtils.payload(item, 'ButtonTitle');\r\n\r\n\r\n const cssClass = utils.classNames('cms_item', 'htmlPanel exHtml', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\r\n\r\n //let itemElt = (
);\r\n\r\n function handleClick(e) { \r\n \r\n let target = \"\";\r\n if(e.target.closest('a')){\r\n target = e.target.closest('a').getAttribute('target');\r\n }\r\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\r\n //const link = utils.url.getLinkFromElement(e.target);\r\n //console.log('clicked', e, e.target, processed);\r\n \r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n history.push(processed.linkInfo.url)\r\n } else {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n // setPdfViewPath(utils.site.resourcePath(link))\r\n }\r\n }\r\n\r\n const htmlBlock = useRef(null);\r\n // function iframeSizer() {\r\n // //console.log('iframesizer')\r\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\r\n // //console.log('iframesizer', iframesContainer)\r\n // if (iframesContainer && iframesContainer.length) {\r\n // iframesContainer.forEach(element => {\r\n // let height = (element.parentElement.offsetWidth * 9) / 16\r\n // //console.log(height, element.parentElement.offsetWidth)\r\n // element.style.height = height + 'px';\r\n // });\r\n // }\r\n // }\r\n\r\n useLayoutEffect(() => {\r\n const buttons = htmlBlock.current.querySelectorAll('.button');\r\n for (let i = 0; buttons && i < buttons.length; i++) {\r\n restructureButton(buttons[i])\r\n }\r\n\r\n // const youtubes = htmlBlock.current.querySelectorAll('iframe[src*=\"youtube\"]');\r\n // console.log(youtubes)\r\n\r\n // iframeSizer();\r\n // window.addEventListener('resize', iframeSizer)\r\n // return (): void => {\r\n // window.removeEventListener('resize', iframeSizer)\r\n // }\r\n\r\n }, [])\r\n\r\n\r\n const style = {\r\n icon: {\r\n marginLeft: '0.5rem',\r\n width: 'auto !important',\r\n fontSize: '80%',\r\n transition: 'all 0.5s'\r\n },\r\n iconOpen: {\r\n transform: 'translateY(-0.1rem) rotate(-180deg)'\r\n },\r\n iconClosed: {\r\n transform: 'translateY(-0.1rem) rotate(0)'\r\n },\r\n panelCollapsed: {\r\n maxHeight: 0,\r\n transition: 'all 0.6s',\r\n opacity: 0,\r\n overflow: 'hidden'\r\n },\r\n panelOpen: {\r\n opacity: 1,\r\n maxHeight: '2000px',\r\n transition: 'all 1s'\r\n }\r\n }\r\n\r\n const toggleExPanel = (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n setOpen(!open)\r\n }\r\n\r\n\r\n if (cmsOption.isCmsEdit)\r\n return (\r\n
handleClick(e)}>\r\n
\r\n {e.preventDefault(); e.stopPropagation();}}>{buttonTitle} \r\n
To edit the button title, please double click or open item editor
\r\n
\r\n \r\n
\r\n
\r\n )\r\n\r\n return (\r\n
handleClick(e)}>\r\n
\r\n {buttonTitle} \r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\nfunction restructureButton(el) {\r\n if (!el.querySelector('span')) {\r\n const span = document.createElement('span');\r\n span.innerHTML = el.innerHTML;\r\n el.innerHTML = '';\r\n el.appendChild(span);\r\n }\r\n}","// //import { css, keyframes } from '@emotion/core'\r\n// //import { variables, mq } from 'cssInJs'\r\n\r\nimport { css } from '@emotion/core'\r\nimport { mq } from '../../cssInJs'\r\n\r\nexport default {\r\n photoGallery : css({\r\n maxWidth : '960px',\r\n margin: 'auto'\r\n }),\r\n thumbnails : css({\r\n display:'flex',\r\n flexWrap:'wrap',\r\n marginLeft:'-5px',\r\n marginRight:'-5px'\r\n }),\r\n thumbnail : css(mq({\r\n //flexBasis: ['50%','25%','33.33%'],\r\n flexBasis: ['50%','25%','16.66%'],\r\n //padding: ['5px']\r\n padding:'5px',\r\n cursor: 'pointer'\r\n })),\r\n bg : {\r\n paddingBottom: '100%',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n }\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './style';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport utils from '../../utils';\r\nimport cmsUtils from '../../cms/utils/cmsUtils';\r\nimport FsLightbox from 'fslightbox-react';\r\nimport { createPortal } from \"react-dom\";\r\n\r\nfunction Portal({children}){\r\n const [el] = useState(document.createElement('div'));\r\n useEffect(() => {\r\n let mount = document.getElementById(\"portal-root\");\r\n mount.appendChild(el);\r\n return () => mount.removeChild(el);\r\n }, [el]);\r\n return createPortal(children, el);\r\n}\r\n\r\nexport function PhotoGallery(props){\r\n const item = props.item;\r\n const cmsOption = props.cmsOption || {};\r\n const cssClass = utils.classNames('cms_item', 'photoGallery', item.cssClass || item.anchorName || '');\r\n const _images = cmsUtils.payload(item, 'ImageUrl') ? cmsUtils.payload(item, 'ImageUrl').split(\"|\") : [];\r\n const _thumbImages = [];\r\n\r\n // _images.forEach(el => {\r\n // let a = el.split(\"/\");\r\n // console.log('e',e);\r\n // });\r\n\r\n //let a = _images[0].split(\"/\");\r\n \r\n if(_images.length > 0){\r\n _images.forEach(el => {\r\n let _texts = el.split('/');\r\n let _text = el.replace(_texts[_texts.length-1], \"@thumb/\" + _texts[_texts.length-1]);\r\n _thumbImages.push(_text);\r\n });\r\n //console.log('222', _images2);\r\n }\r\n\r\n //const _images = ['https://jaba.com.au/sites/jaba/media/images/multicolour-services-min.jpg'];\r\n const [toggler, setToggler] = useState(false);\r\n const [popupIndex, setPopupIndex] = useState(0);\r\n \r\n return(\r\n
\r\n {/* */}\r\n \r\n
\r\n PhotoGallery\r\n
\r\n \r\n
\r\n\r\n
\r\n {\r\n _thumbImages.map((item, index) =>\r\n
{\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setToggler(!toggler);\r\n setPopupIndex(index);\r\n }}>\r\n
\r\n
\r\n )\r\n \r\n }\r\n
\r\n
\r\n ); \r\n}","import { css } from '@emotion/core'\r\n//import { mq } from 'cssInJs'\r\n\r\nexport default{\r\n testimonialPanel : css({\r\n marginTop: '20px',\r\n marginBottom: '20px',\r\n backgroundColor: 'transparent',\r\n '& .slick-prev:before, .slick-next:before' : {\r\n color : 'black'\r\n },\r\n '& .slick-next' : {\r\n right : '-2%'\r\n },\r\n '& .slick-prev' : {\r\n left : '-2%'\r\n }\r\n })\r\n}","import { css } from '@emotion/core'\r\nimport { mq } from '../../../cssInJs'\r\n\r\nexport default{\r\n testimonialItem : css(mq({\r\n maxWidth : '300px',\r\n backgroundColor: '#f8f8ff',\r\n opacity: '.9',\r\n textAlign: 'center',\r\n color: '#000',\r\n padding: '10px',\r\n //height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n margin: 'auto',\r\n height: ['400px', '430px']\r\n })),\r\n\r\n\r\n testimonialItem_title : css(mq({\r\n marginBottom: '0px',\r\n fontSize: ['2rem', '1.72rem']\r\n })),\r\n\r\n testimonialItem_desc :css(mq({\r\n flex: '1 1 auto',\r\n fontSize: ['1.2rem', '1rem'] \r\n //flexGrow: '1',\r\n //flexShrink: '1'\r\n })),\r\n\r\n testimonialItem_bottom : css(mq({\r\n fontSize : ['1rem', '0.86rem']\r\n }))\r\n}","import utils from '../../../utils';\r\nimport cmsUtils from '../../../cms/utils/cmsUtils';\r\nimport { IoIosStar } from \"react-icons/io\";\r\n\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './style';\r\n\r\nexport function TestimonialItem(props){\r\n\r\n const item = props.item;\r\n //const cmsOption = props.cmsOption || {};\r\n const cssClass = utils.classNames('cms_item', 'testimonialItem', item.cssClass || item.anchorName || '');\r\n \r\n const startRatingColor = (props.startRatingColor && props.startRatingColor !== \"\") ? props.startRatingColor : \"black\";\r\n \r\n const title = cmsUtils.payload(item, 'Title');\r\n const desc = cmsUtils.payload(item, 'Desc');\r\n const bottom = cmsUtils.payload(item, 'BottomText');\r\n const ratingValue = parseInt(cmsUtils.payload(item, 'RatingStar'));\r\n \r\n var rating = [];\r\n\r\n for(var i = 0; i < ratingValue; i++ ){\r\n rating.push(\r\n \r\n );\r\n }\r\n\r\n return(\r\n // data-cms-item-id={cmsOption.isCmsEdit && item.itemId} id={item.anchorName}\r\n
\r\n

\r\n { title }\r\n

\r\n
\r\n { rating }\r\n
\r\n {/* style={{ flexBasis: props.desH + \"px\" }} */}\r\n
\r\n { desc }\r\n
\r\n
\r\n { bottom }\r\n
\r\n
\r\n );\r\n}","//import { Item } from 'cms/items/item';\r\nimport Slider from \"react-slick\";\r\nimport utils from '../../../utils';\r\n//import cmsUtils from 'cms/utils/cmsUtils';\r\n\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport style from './style';\r\n//import { useState, useEffect } from 'react';\r\n\r\nimport { TestimonialItem } from '../testimonialItem/view';\r\n\r\nexport function TestimonialPanel(props){\r\n const item = props.item;\r\n //const defaultDesH = 220;\r\n const startRatingColor = props.startRatingColor;\r\n const subItems = item.items || [];\r\n //console.log(subItems.length);\r\n const cmsOption = props.cmsOption || {};\r\n const cssClass = utils.classNames('cms_item', 'testimonialPanel', item.cssClass || item.anchorName || '');\r\n \r\n //const [desH, setDesH] = useState(defaultDesH);\r\n\r\n //var maxDesTextLength = 0;\r\n const testimonialItems = subItems.map((subItem, index) => {\r\n // let subItemDes = cmsUtils.payload(subItem, \"Desc\");\r\n // if(maxDesTextLength < subItemDes.length){\r\n // maxDesTextLength = subItemDes.length\r\n // }\r\n //return \r\n return \r\n }\r\n );\r\n \r\n // useEffect(() => {\r\n // if(defaultDesH < maxDesTextLength){\r\n // setDesH(maxDesTextLength);\r\n // }\r\n // }, [maxDesTextLength]);\r\n\r\n var settings = {\r\n dots: false,\r\n infinite: true,\r\n speed: 1700,\r\n autoplaySpeed: 3000,\r\n ////fade: true,\r\n autoplay: true,\r\n slidesToShow: (subItems.length >= 3 ? 3 : subItems.length),\r\n //slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive : [\r\n {breakpoint : 1024, settings : { slidesToShow: (subItems.length >= 2 ? 2 : subItems.length) }},\r\n {breakpoint : 800, settings : { slidesToShow: 1 }}\r\n ]\r\n };\r\n\r\n return(\r\n
\r\n \r\n { testimonialItems }\r\n \r\n
\r\n );\r\n}","import { css } from '@emotion/core'\r\n//import { mq } from '../../cssInJs'\r\nexport default{\r\n exTextItem : css({\r\n overflow:'hidden',\r\n maxHeight:'0',\r\n transition: 'all 0.8s',\r\n padding: '0px',\r\n '&.expand' : {\r\n maxHeight:'100%',\r\n padding: '1rem 0'\r\n }\r\n })\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\n//import React from 'react';\r\nimport cmsUtils from '../../cms/utils/cmsUtils';\r\nimport utils from '../../utils';\r\nimport style from './style';\r\nimport { Item } from '../../cms/items/item';\r\n\r\nexport function ExpandablePanel(props){\r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n const bgColor = cmsUtils.payload(item, 'BgColor');\r\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\r\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\r\n \r\n let bgUrl = null;\r\n\r\n if (imageUrl){\r\n bgUrl = utils.site.resourcePath(imageUrl);\r\n }\r\n else if (backgroundTile){\r\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\r\n }\r\n\r\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'expandablePanel', cmsOption.isCmsEdit && 'expandablePanel_item_cms', item.cssClass || item.anchorName || '');\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n //id={item.anchorName}\r\n return (\r\n
\r\n
\r\n
\r\n {subItemsElts}\r\n
\r\n
\r\n )\r\n}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default {\n sliderAwardPanel: css({\n marginTop: '20px',\n marginBottom: '20px',\n backgroundColor: 'transparent',\n '& .slick-prev:before, .slick-next:before': {\n color: 'black'\n },\n '& .slick-next': {\n right: '-2%'\n },\n '& .slick-prev': {\n left: '-2%'\n }\n }),\n sliderImageWrapper: {\n height: '100%'\n },\n sliderImageWrapper2: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 5px',\n flexDirection: 'column',\n margin: 'auto',\n maxWidth: '500px'\n },\n sliderImage: css({\n //width: 'auto !important',\n //height:'100% !important',\n //display: 'block !important',\n //margin: 'auto',\n //maxHeight: '180px'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport Slider from \"react-slick\";\nimport utils from '../../../utils';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport { SiteLink } from '../../../components';\n\nexport function SliderAwardPanel(props) {\n const item = props.item;\n //const defaultDesH = 220;\n const subItems = item.items || [];\n //console.log(subItems.length);\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'sliderAwardPanel', item.cssClass || item.anchorName || '');\n\n const sliderAwardItems = subItems.map((subItem, index) => {\n const imageUrl = cmsUtils.payload(subItem, 'ImageUrl');\n const bottomText = cmsUtils.payload(subItem, 'BottomText');\n const linkUrl = cmsUtils.payload(subItem, 'LinkUrl');\n return (\n
\n {\n (linkUrl && linkUrl !== '') ? \n \n
\n {'sliderimage-'\n
{bottomText}
\n
\n
: \n \n
\n {'sliderimage-'\n
{bottomText}
\n
\n \n }\n \n \n
\n )\n }\n );\n\n var numOfSlides = (maxNum) => subItems.length >= maxNum ? maxNum : subItems.length\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n ////fade: true,\n autoplay: true,\n slidesToShow: numOfSlides(6),\n //slidesToShow: 3,\n slidesToScroll: numOfSlides(3),\n responsive: [\n { breakpoint: 1024, settings: { slidesToShow: numOfSlides(5), slidesToScroll: numOfSlides(2) } },\n { breakpoint: 992, settings: { slidesToShow: numOfSlides(4), slidesToScroll: numOfSlides(2) } },\n { breakpoint: 768, settings: { slidesToShow: numOfSlides(3), slidesToScroll: numOfSlides(2) } },\n { breakpoint: 576, settings: { slidesToShow: numOfSlides(2), slidesToScroll: numOfSlides(1)} }\n ]\n };\n\n return (\n
\n \n {sliderAwardItems}\n \n
\n );\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport React, { Fragment, useState, useEffect } from 'react';\nimport env from '../../../env';\nimport { Loading, ErrorPopup, usePost } from '../../../components';\nimport { useForm } from '../../../form';\nimport { ProductTile } from './productTile';\nimport { tileListStyle } from './productTileStyle';\nimport { getCategoryListModel } from './categoryListModel';\nimport { useAuth } from \"auth\";\n\nexport function ProductItems({ categories, mainCategory }) {\n const post = usePost();\n React.useEffect(() => {\n post.send(env.apiBase + '/api/product/getProducts', {\n categories: categories,\n });\n // eslint-disable-next-line\n }, [categories]);\n\n if (post.loading()) {\n return ;\n } else if (post.hasErrors()) {\n return ;\n }\n\n const data = post.response;\n console.log(\n '%c [ mainCategory ]-27',\n 'font-size:13px; background:pink; color:#bf2c9f;',\n mainCategory\n );\n const mainCategory_name = data.categories.filter(\n (category) => category.categoryId === mainCategory\n )[0].categoryName;\n\n data.selectedCategories = [];\n data.categories.map((c) => {\n categories.split(',').map((s) => {\n // eslint-disable-next-line\n if (c.categoryId == s) {\n data.selectedCategories.push(c);\n }\n return null;\n });\n return null;\n });\n \n console.log('product List', data);\n\n return(\n \n )\n\n}\n\nfunction CheckAuthView({data, categories, mainCategory, mainCategory_name}){\n const auth = useAuth();\n const [checkAuth, setCheckAuth ] = useState(null);\n useEffect(() => {\n const fetch = async () => {\n if (await auth.loggedIn()){\n setCheckAuth(true);\n }\n else{\n setCheckAuth(false);\n }\n };\n fetch();\n\n // eslint-disable-next-line\n }, []);\n\n if(checkAuth === null){\n return(\n \n )\n }\n \n return data.items && data.items.length > 0 ? (\n \n ) : (\n
No products
\n );\n\n}\n\nfunction Items({\n items,\n categories,\n defaultCategories,\n mainCategory,\n mainCategory_name,\n checkMember,\n checkAuth\n}) {\n const s = tileListStyle;\n const defaultCategoriesArray =\n defaultCategories && defaultCategories !== ''\n ? defaultCategories.split(',')\n : [];\n const model = getCategoryListModel(\n categories,\n defaultCategoriesArray,\n mainCategory\n );\n\n const categoryListForm = useForm(model, {\n usePlaceholder: true,\n onControlChanged: orderItemChanged,\n });\n\n const [showProducts, setShowProducts] = useState(() => {\n if (defaultCategoriesArray.length === 1) {\n let _items = [];\n let _items2 = JSON.parse(JSON.stringify(items));\n _items = _items2.filter((item) => {\n for (let i in item.productCategories) {\n if (\n item.productCategories[i].categoryId === defaultCategoriesArray[0]\n ) {\n item.seqInCategory = item.productCategories[i].seq;\n return true;\n }\n }\n return false;\n });\n sortProudcts(_items);\n return _items;\n }\n return items;\n });\n\n function orderItemChanged(e, control) {\n if (control && control.name === 'categoryList') {\n console.log('controll value', control.value);\n let _items = [];\n if (control.value && control.value !== '') {\n _items = items.filter((item) => {\n if (control.value === '_favourites_') {\n if (localStorage.favorites !== '') {\n if (localStorage.favorites.includes(item.productId)) {\n return true;\n }\n }\n } else if (control.value === mainCategory_name) {\n for (let i in item.productCategories) {\n item.seqInCategory = item.productCategories[i].seq;\n }\n return true;\n } else {\n for (let i in item.productCategories) {\n if (item.productCategories[i].categoryId === control.value) {\n item.seqInCategory = item.productCategories[i].seq;\n return true;\n }\n }\n }\n return false;\n });\n } else {\n _items = items;\n }\n //sort\n sortProudcts(_items);\n setShowProducts(_items);\n }\n }\n\n const render = (name) => categoryListForm.renderControl(name, null);\n const _checkAuth = (checkAuth === true && checkMember === true) ? true : false; \n\n return (\n \n
{render('categoryList')}
\n
\n {/* {items.map((item, index) => )} */}\n {showProducts.length > 0 ? (\n showProducts.map((item, index) => (\n \n ))\n ) : (\n
No product
\n )}\n
\n
\n );\n}\n\nfunction sortProudcts(items) {\n items.sort((a, b) => {\n return a.seqInCategory - b.seqInCategory;\n });\n}\n","import { fb } from '../../../lib/form';\nexport function getCategoryListModel(data, defaultCategories, mainCategory) {\n let select_mainCategory = data.filter((d) => d.categoryId === mainCategory);\n select_mainCategory = { ...select_mainCategory[0], selected: true };\n\n let mainCategory_object = {\n name: select_mainCategory.categoryName,\n value: select_mainCategory,\n };\n\n let options = [\n { name: mainCategory_object.name, value: select_mainCategory.categoryId },\n // { name: 'All', value: '' },\n { name: 'Favourites', value: '_favourites_' },\n ];\n\n if (data.length > 0) {\n data.forEach((el) => {\n if (el.categoryId === mainCategory) {\n options.push({\n name: select_mainCategory.categoryName,\n value: select_mainCategory.categoryId,\n selected: select_mainCategory.selected,\n });\n } else {\n options.push({ name: el.categoryName, value: el.categoryId });\n }\n });\n }\n\n let categoryList = '';\n if (defaultCategories.length === 1) {\n categoryList = defaultCategories[0];\n }\n\n const model = fb.group({\n categoryList: [\n categoryList || '',\n [],\n {\n label: 'FILTER BY',\n type: 'select',\n options: options,\n },\n ],\n });\n\n return model;\n}\n","import { css } from '@emotion/core'\r\nimport { mq } from '../../../cssInJs'\r\n\r\nconst step = css(mq({\r\n flex: '0 0 100%',\r\n opacity: 0,\r\n //padding: '2rem 1rem 2rem',\r\n //paddingBottom: '0px',\r\n // maxHeight: '300px',\r\n transition: 'all 0.3s',\r\n}))\r\n\r\nexport default {\r\n cart: css({\r\n position: 'relative',\r\n margin: 'auto',\r\n marginBottom: '3rem',\r\n textAlign: 'left'\r\n }),\r\n\r\n stepsWrapper: css({\r\n overflow: 'hidden',\r\n }),\r\n steps: css({\r\n display: 'flex',\r\n transition: 'all 1s cubic-bezier(0.22, 0.61, 0.36, 1)',\r\n '& h3, & h4': {\r\n //textTransform: 'uppercase'\r\n }\r\n }),\r\n step,\r\n stepCurrent: css(step, {\r\n // maxHeight: '2000px',\r\n opacity: 1,\r\n '&.ecm_cart_shipping, &.ecm_cart_payment' : {\r\n background: 'rgba(255,255,255,0.5)',\r\n }\r\n }),\r\n stepPrev: css(step, {}),\r\n stepNext: css(step, {}),\r\n stepLast: css({\r\n //maxHeight: '1000px',\r\n opacity: 1\r\n }),\r\n\r\n}\r\n","import { css } from '@emotion/core'\r\nimport { mq } from '../../../cssInJs'\r\n\r\nconst navs = {\r\n navs: css(mq({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n borderBottom: 'solid 1px #ccc',\r\n marginBottom: 8,\r\n background: 'rgba(255,255,255,0.9)',\r\n //background: 'linear-gradient(0deg, rgba(153,153,153,1) 0%, rgba(255,255,255,1) 100%)',\r\n })),\r\n nav: css(mq({\r\n //width: 20,\r\n //height: 30,\r\n padding: '0.9rem 1rem',\r\n fontSize: '1.1rem',\r\n position: 'relative',\r\n flex: '1 1 auto',\r\n textAlign: 'center',\r\n })),\r\n navArrow: {\r\n },\r\n navCurrent: css({\r\n //color: 'white',\r\n //backgroundColor: variables.primaryColor\r\n //background: 'linear-gradient(0deg, rgba(34,45,100,1) 0%, rgba(89,102,166,1) 100%)',\r\n //borderBottom: 'solid 2px ' + variables.primaryColor\r\n //background: '#ddd',\r\n fontWeight: 'bold',\r\n background: 'linear-gradient(0deg, rgba(0,0,0,0.08) 0%, rgba(255,255,255,1) 100%)',\r\n //borderBottom: 'solid 2px ' + variables.primaryColor\r\n }),\r\n navFilled: css({\r\n //backgroundColor: '#666'\r\n }),\r\n navClickable: css({\r\n cursor: 'pointer'\r\n })\r\n}\r\n\r\nexport default {\r\n\r\n arrow: css(mq({\r\n position: \"absolute\",\r\n cursor: 'pointer',\r\n color: '#aaa',\r\n transition: 'all 0.3s',\r\n zIndex: '1',\r\n // xs, sm(>=576), md(>=768), lg(>=992), xl(>=1200), xxl(>=1600)\r\n top: 0,\r\n // [mqMax.md]: {\r\n // width: 100\r\n // },\r\n width: [20, 25, 30, 40],\r\n '&:hover': {\r\n color: '#666'\r\n }\r\n })),\r\n arrowPrev: css(mq({\r\n left: [-15, 0]\r\n })),\r\n arrowNext: css(mq({\r\n right: [-15, 0]\r\n })),\r\n\r\n ...navs\r\n}\r\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './stepStyle';\r\nimport React from 'react';\r\n\r\nimport { FaAngleRight } from 'react-icons/fa';\r\n\t\r\n\r\n\r\nexport function StepNav({ stepInfo }) {\r\n const { steps, currentStep, moveTo, canGo } = stepInfo;\r\n\r\n //if (currentStep === steps.length - 1) return null;\r\n return
\r\n {steps.filter(x => x.id !== 'thanks').map((step, index) =>\r\n \r\n moveTo(index)}\r\n >\r\n {step.title}\r\n\r\n
\r\n {index < steps.length - 1 && }\r\n \r\n )}\r\n \r\n}\r\n\r\n","export default {\r\n items: {\r\n marginBottom: '2rem'\r\n },\r\n item: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n borderBottom: 'solid 1px #ccc',\r\n padding: '0.5rem',\r\n transition: 'all 0.5s',\r\n '&:hover': {\r\n background: '#f3f3f3'\r\n }\r\n },\r\n // imgContainer: {\r\n // flex: '1 1 auto',\r\n // },\r\n product: {\r\n flex: '1 1 auto',\r\n },\r\n details: {\r\n flex: '0 1 auto',\r\n display: 'flex',\r\n },\r\n optionName: {\r\n fontSize: '0.9rem',\r\n },\r\n optionValue: {\r\n fontSize: '0.9rem',\r\n fontWeight: 'bold',\r\n },\r\n qty: {\r\n margin: '0 0.5rem',\r\n '.form-group': {\r\n display: 'inline-block',\r\n },\r\n 'input': {\r\n width: '3.5rem'\r\n }\r\n },\r\n amount: {\r\n margin: '0 0.5rem',\r\n paddingTop: '0.3rem',\r\n minWidth: '5rem',\r\n textAlign: 'right'\r\n },\r\n remove: {\r\n //margin: '0 0.5rem',\r\n //paddingTop: '0.1rem',\r\n 'button' : {\r\n display: 'block',\r\n }\r\n }\r\n \r\n}\r\n","import { mq } from '../../../cssInJs'\r\nexport default {\r\n summary: mq({\r\n marginLeft: [0, null, 30],\r\n border: 'solid 1px #333',\r\n padding: '0.5rem',\r\n color: 'white',\r\n borderRadius: ' 0.5rem',\r\n background: '#555',\r\n marginBottom: '0.5rem'\r\n }),\r\n\r\n totalHdr: {\r\n fontSize: '1.1rem',\r\n marginBottom: '0.5rem'\r\n },\r\n\r\n totalAmount: {\r\n fontSize: '1.2rem',\r\n fontWeight: 'bold'\r\n }\r\n}\r\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './summaryStyle';\r\n\r\nimport utils from '../../../utils';\r\nimport { Fragment } from 'react';\r\n\r\nexport function CartSummary({ cart }) { \r\n //console.log('cart', cart); \r\n const formatMoney = utils.money.formatMoney;\r\n return
\r\n {\r\n cart.shippingMethod === \"Standard\" &&\r\n \r\n
Shipping
\r\n
AU {formatMoney(cart.shippingAmount)}
\r\n
\r\n
\r\n }\r\n
Total Amount
\r\n
AU {formatMoney(cart.totalAmount)}
\r\n {/*
\r\n
Total:
\r\n
AU {formatMoney(cart.itemAmount)}
\r\n
\r\n
\r\n
GST:
\r\n
AU {formatMoney(cart.taxAmount)}
\r\n
*/}\r\n {/*
\r\n
Shipping:
\r\n
\r\n Method not selected yet\r\n Pickup - FREE\r\n {{cart.shippingAmount > 0? 'AU ' + formatMoney(cart.shippingAmount) : 'FREE'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{cart.shippingMethod == ''? 'Please select Shipping Option.': 'AU ' + formatMoney(cart.totalAmount)}}\r\n
\r\n
\r\n */}\r\n
\r\n}","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport style from \"./orderItemStyle\";\r\nimport React from \"react\";\r\n\r\nimport { Button, ErrorMessage } from \"../../../components\";\r\nimport utils from \"../../../utils\";\r\n\r\nimport { CartSummary } from \"../cartSummary/summary\";\r\n\r\nexport function OrderItems({ cart, form, moveNext, post, remove }) {\r\n //const model = form.model;\r\n const items = form.findControl(\"items\").controls;\r\n const render = (name, parent = null) => form.renderControl(name, parent);\r\n\r\n function itemAmount(item, orderItem) {\r\n const val = item.getValue();\r\n return (val.quantity * (orderItem.unitPrice * 100)) / 100;\r\n }\r\n\r\n const next = (e) => {\r\n form.validateForm(e, () => {\r\n moveNext();\r\n });\r\n };\r\n\r\n function ItemVariantSummary({ orderItem }) {\r\n if (!orderItem.variantOptionsSerialised) return null;\r\n const options = JSON.parse(orderItem.variantOptionsSerialised);\r\n return (\r\n
\r\n {options\r\n .map((x) => (\r\n \r\n {x.Name}:\r\n {x.Value}\r\n \r\n ))\r\n .reduce(\r\n (acc, x) =>\r\n acc === null ? (\r\n x\r\n ) : (\r\n \r\n {acc}, {x}\r\n \r\n ),\r\n null\r\n )}\r\n
\r\n );\r\n }\r\n\r\n const orderItems = cart.orderItems.filter((x) => x.orderItemType === 0);\r\n // const taxLines = cart.orderItems.filter((x) => x.orderItemType === 1);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {orderItems.map((orderItem, index) => (\r\n
\r\n
\r\n
\r\n \"immmm\"\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n Qty: {render(\"quantity\", items[index])}\r\n
\r\n\r\n
\r\n \r\n {utils.money.formatMoney(\r\n itemAmount(items[index], orderItem)\r\n )}\r\n \r\n remove(e, index)}\r\n status={form.status}\r\n >\r\n Remove\r\n \r\n
\r\n
\r\n
\r\n ))}\r\n {/* {taxLines.map((orderItem, index) => (\r\n
\r\n
Tax 111111: {orderItem.itemName}
\r\n
\r\n
\r\n
\r\n {utils.money.formatMoney(orderItem.unitPrice)}\r\n
\r\n
\r\n
\r\n
\r\n ))} */}\r\n\r\n
\r\n
GST: GST included in price
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n

\r\n Get a FREE Pack of Seeds With Every Purchase!\r\n

\r\n

\r\n We aim to nurture the human spirit with full inclusion. With each\r\n order, you will receive a FREE gift as part of an\r\n initiative of Australian Native Food Co. 1 x Pack of Seeds Native\r\n seeds.\r\n

\r\n
\r\n \r\n \r\n \r\n );\r\n}\r\n","import { fb } from '../../../form';\r\n\r\nexport function getOrderItemFormData(cart) {\r\n const model = fb.group({\r\n items: fb.array([]),\r\n });\r\n\r\n const itemArray = model.find('items').controls;\r\n (cart.orderItems || []).forEach(item => {\r\n itemArray.push(orderItemData(item))\r\n })\r\n return model;\r\n}\r\n\r\n\r\nexport function orderItemData(item) {\r\n return fb.group({\r\n quantity: [item.quantity || '', [], { label: null, type: 'number', attrs : {min : 1} }]\r\n })\r\n}\r\n\r\n// addedUnitPrice: 0\r\n// discountUnitPrice: 0\r\n// extSerialized: null\r\n// itemDesc: \"\"\r\n// itemDescHtml: \"\"\r\n// itemName: \"Donation\"\r\n// orderItemDescriptions: []\r\n// orderItemId: \"031283cd-dbf2-4d62-aaf7-4134231f27a6\"\r\n// orderItemOptions: []\r\n// productCode: \"Donation\"\r\n// productId: \"dbdc9aad-16ab-47a0-97c7-ac2c13cf01a6\"\r\n// quantity: 1\r\n// shippingFeeType: 1\r\n// shppingFee: 0\r\n// subTitle: null\r\n// taxType: 2\r\n// thumbnailUrl: null\r\n// unitPrice: 0","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport { Fragment } from 'react';\r\n//import style from './shippingStyle';\r\nimport { Button, ErrorMessage } from '../../../components';\r\nimport { CartSummary } from '../cartSummary/summary';\r\n//import utils from '../../../utils';\r\n\r\nexport function Shipping({ cart, form, saveShipping, post, action }) {\r\n const model = form.model;\r\n const render = (name) => form.renderControl(name);\r\n\r\n const val = form.getValue();\r\n //const billingInfo = model.find('billingInfo');\r\n //const shippingInfo = model.find('shippingInfo');\r\n\r\n const next = (e) => {\r\n form.validateForm(e, () => {\r\n saveShipping();\r\n //utils.ui.scrollTo('#ecmcart');\r\n })\r\n }\r\n \r\n // if (billingInfo){\r\n // billingInfo.disableValidators = val.useSameAddress;\r\n // }\r\n \r\n // shippingInfo.disableValidators = false;\r\n\r\n // if(val.shippingMethod === 'Pickup' || val.shippingMethod === '0'){\r\n // shippingInfo.disableValidators = true;\r\n // }\r\n\r\n return
\r\n
\r\n
\r\n
\r\n

Delivery Method

\r\n {render('shippingMethod')}\r\n \r\n {/* {\r\n val.shippingMethod !== '' &&\r\n \r\n {\r\n val.shippingMethod === 'Standard' &&\r\n \r\n

Shipping Address

\r\n
\r\n \r\n }\r\n

Billing Address

\r\n {\r\n val.shippingMethod === 'Standard' &&\r\n \r\n {render('useSameAddress')}\r\n \r\n }\r\n { \r\n !val.useSameAddress &&\r\n
\r\n }\r\n \r\n } */}\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n {\r\n val.shippingMethod !== '' &&\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\nfunction Address({form, addressModel}) {\r\n const render = (name) => form.renderControl(name, addressModel);\r\n return
\r\n
\r\n
\r\n {render('firstName')}\r\n
\r\n
\r\n {render('surname')}\r\n
\r\n
\r\n
\r\n
\r\n {render('street1')}{render('street2')}\r\n
\r\n
\r\n
\r\n
\r\n {render('suburb')}\r\n
\r\n
\r\n {render('state')}\r\n
\r\n
\r\n {render('postcode')}\r\n
\r\n
\r\n
\r\n
\r\n {render('email')}\r\n
\r\n
\r\n {render('mobile')}\r\n
\r\n
\r\n
\r\n}","import { mq } from \"../../../cssInJs\";\r\n\r\nexport default {\r\n pay: {\r\n 'h3': {\r\n marginTop: 0\r\n }\r\n },\r\n stripeWrapper: {\r\n margin: '1rem 0 1rem',\r\n maxWidth: 500,\r\n padding: '1rem',\r\n backgroundColor: '#999999'\r\n },\r\n formActions: {\r\n marginTop: '2rem'\r\n },\r\n paymentInfoText : mq({\r\n fontSize: ['0.6rem', '0.5rem'],\r\n marginTop: '1rem',\r\n '.contact-link' : {\r\n color: 'white'\r\n }\r\n })\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './payStyle';\r\nimport React from 'react';\r\nimport { SiteLink, usePost } from '../../../components';\r\nimport { Button, ErrorMessage } from '../../../components';\r\nimport env from '../../../env';\r\nimport { useRouter } from '../../../components';\r\nimport { initStripe } from './payStripe';\r\nimport { CartSummary } from '../cartSummary/summary';\r\n//import { useStore } from \"../../../store\";\r\n\r\nexport function Pay({ cart, model, form, payStripe }) {\r\n\r\n const [stripe, setStripe] = React.useState(null);\r\n const [card, setCard] = React.useState(null);\r\n const [error, setError] = React.useState(null);\r\n\r\n const post = usePost();\r\n const { Redirect } = useRouter();\r\n //const { dispatch } = useStore();\r\n\r\n React.useEffect(() => {\r\n const { stripe, card } = initStripe(setError)\r\n setStripe(stripe);\r\n setCard(card);\r\n }, [])\r\n\r\n function payNow() {\r\n if (error) return;\r\n stripe.createToken(card).then(function (result) {\r\n if (result.error) {\r\n setError(result.error.message);\r\n } else {\r\n setError(null);\r\n // Send the token to your server.\r\n onSubmit(result.token.id);\r\n }\r\n });\r\n }\r\n\r\n function onSubmit(tokenId) {\r\n console.log(tokenId)\r\n post.send(env.apiBase + \"/api/cart/payStripe\", { tokenId: tokenId, itemTotalAmount: cart.itemTotalAmount, cartId: env.getDevCartId() });\r\n }\r\n\r\n if (post.done()) {\r\n env.setDevCartId(null);\r\n //dispatch({ type: 'SET_STATE', payload: { cartInfo:0 }})\r\n return \r\n }\r\n\r\n return
\r\n
\r\n
\r\n

Pay by Credit Card

\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Payment through encrypted gateway can be made by Visa, Mastercard or AMEX. Please enter your credit card details to complete your order. \r\n For alternative payment methods please contact us \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n}\r\n","import env from '../../../env';\r\n\r\nexport function initStripe(setError) {\r\n // Create a Stripe client.\r\n const stripe = window.Stripe(env.stripeKey);\r\n\r\n\r\n // Create an instance of Elements.\r\n const elements = stripe.elements();\r\n\r\n // Custom styling can be passed to options when creating an Element.\r\n // (Note that this demo uses a wider set of styles than the guide below.)\r\n const elStyle = {\r\n base: {\r\n color: '#32325d',\r\n fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\r\n fontSmoothing: 'antialiased',\r\n fontSize: '18px',\r\n '::placeholder': {\r\n //color: '#aab7c4'\r\n color: '#000000'\r\n }\r\n },\r\n invalid: {\r\n color: '#fa755a',\r\n iconColor: '#fa755a'\r\n }\r\n };\r\n\r\n // Create an instance of the card Element.\r\n const card = elements.create('card', { style: elStyle });\r\n\r\n // Add an instance of the card Element into the `card-element`
.\r\n card.mount('#card-element');\r\n\r\n // Handle real-time validation errors from the card Element.\r\n card.addEventListener('change', function (event) {\r\n if (event.error) {\r\n setError(event.error.message);\r\n } else {\r\n setError(null);\r\n }\r\n });\r\n\r\n return { stripe, card };\r\n}","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport style from \"./cartStyle\";\r\nimport React, { Fragment, useEffect } from \"react\";\r\n\r\n//import { SiteLink } from '../../../components';\r\nimport env from \"../../../env\";\r\nimport { usePost, Loading, ErrorPopup, useRouter } from \"../../../components\";\r\nimport { useForm } from \"../../../form\";\r\nimport { useStep } from \"./useStep\";\r\nimport { StepNav } from \"../cartStep/stepNav\";\r\n\r\nimport { OrderItems } from \"../cartOrderItems/orderItems\";\r\nimport { getOrderItemFormData } from \"../cartOrderItems/orderItemFormData\";\r\nimport { Shipping } from \"../cartShipping/shipping\";\r\nimport { getShippingFormData } from \"../cartShipping/shippingFormData\";\r\nimport { Pay } from \"../cartPayment/pay\";\r\nimport utils from \"../../../utils\";\r\nimport { useAuth } from \"auth\";\r\nimport { useStore } from \"../../../store\";\r\n\r\nexport function Cart() {\r\n const auth = useAuth();\r\n const [checkAuth, setCheckAuth] = React.useState(null);\r\n const { query } = useRouter();\r\n const canceled = query.canceled || \"\";\r\n const errorMsg = query.errormsg || \"\";\r\n\r\n useEffect(() => {\r\n const fetch = async () => {\r\n if (await auth.loggedIn()) {\r\n setCheckAuth(true);\r\n } else {\r\n setCheckAuth(false);\r\n }\r\n };\r\n fetch();\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n \r\n {\r\n canceled === \"true\" && errorMsg !== '' &&
{'Payment error - ' + errorMsg}
\r\n }\r\n {checkAuth === null ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nfunction CartMainView({ checkAuth, auth }) {\r\n const [sendingStatus, setSendingStatus] = React.useState(null);\r\n const [cart, setCart] = React.useState(null);\r\n const { dispatch } = useStore();\r\n\r\n //const get = useGet();\r\n const post = usePost();\r\n\r\n React.useEffect(() => {\r\n let _cartId = env.getDevCartId();\r\n const value = {\r\n cartId: _cartId === \"null\" ? null : _cartId,\r\n auth: checkAuth,\r\n };\r\n\r\n post.send(env.apiBase + \"/api/cart/getCart\", value);\r\n setSendingStatus(\"pending\");\r\n \r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (post.loading()) {\r\n return ;\r\n } else if (post.hasErrors()) {\r\n if (\r\n post.errors.length > 0 &&\r\n post.errors[0] === \"Permission, this page will reload\"\r\n ) {\r\n auth.signout().then((user) => {\r\n dispatch({ type: \"SET_STATE\", payload: { authCheck: false } });\r\n dispatch({ type: \"SET_STATE\", payload: { cartInfo: 0 } });\r\n dispatch({ type: 'SET_STATE', payload: { userFirstName : \"\" }});\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 1000);\r\n });\r\n }\r\n return ;\r\n }\r\n\r\n if (sendingStatus === \"pending\") {\r\n setCart(post.response);\r\n setSendingStatus(null);\r\n }\r\n\r\n if (!cart || !cart.cartInfo || cart.cartInfo.totalQuantity === 0) {\r\n return ;\r\n }\r\n return ;\r\n}\r\n\r\nfunction CartView({ cart, setCart, checkAuth }) {\r\n const [sendingStatus, setSendingStatus] = React.useState(null);\r\n const [goNext, setGoNext] = React.useState(false);\r\n const [action, setAction] = React.useState(\"\");\r\n const post = usePost();\r\n const stepInfo = useStep([\r\n { id: \"orderItems\", title: \"Cart\" },\r\n { id: \"shipping\", title: \"Your Details\" }\r\n ]);\r\n const { steps, currentStep, lastStep, moveNext, markAsFilled } = stepInfo;\r\n\r\n const orderItemForm = useForm(getOrderItemFormData(cart), {\r\n onControlChanged: orderItemChanged,\r\n });\r\n const shippingForm = useForm(getShippingFormData(cart), {\r\n onControlChanged: orderItemChanged,\r\n });\r\n const { dispatch } = useStore();\r\n\r\n function orderItemChanged(e, control) {\r\n if (control && control.name === \"quantity\") {\r\n const index = orderItemForm\r\n .findControl(\"items\")\r\n .findIndexById(control.parent.id);\r\n const orderItem = cart.orderItems[index];\r\n const value = {\r\n qty: control.value,\r\n orderItemId: orderItem.orderItemId,\r\n cartId: env.getDevCartId(),\r\n auth: checkAuth,\r\n };\r\n post.send(env.apiBase + \"/api/cart/updateQty\", value);\r\n setSendingStatus(\"pending\");\r\n setGoNext(false);\r\n } else if (\r\n control &&\r\n (control.name === \"shippingMethod\" || control.name === \"shippingCountry\")\r\n ) {\r\n // shippingForm.findControl(\"useSameAddress\").value = false;\r\n // if (control.value === \"Standard\") {\r\n // shippingForm.findControl(\"useSameAddress\").value = true;\r\n // }\r\n const value = {\r\n ...shippingForm.getValue(),\r\n cartId: env.getDevCartId(),\r\n auth: checkAuth,\r\n };\r\n post.send(env.apiBase + \"/api/cart/saveShippingInfo\", value);\r\n setSendingStatus(\"pending\");\r\n setAction(\"\");\r\n setGoNext(false);\r\n }\r\n }\r\n\r\n function remove(e, index) {\r\n console.log(index);\r\n const orderItem = cart.orderItems[index];\r\n const value = {\r\n orderItemId: orderItem.orderItemId,\r\n cartId: env.getDevCartId(),\r\n auth: checkAuth,\r\n };\r\n post.send(env.apiBase + \"/api/cart/removeItem\", value);\r\n setSendingStatus(\"pending\");\r\n setAction(\"\");\r\n setGoNext(false);\r\n }\r\n\r\n function saveShipping(e) {\r\n //const value = { ...shippingForm.getValue(), useSameAddress: true, cartId: env.getDevCartId() };\r\n const value = {\r\n ...shippingForm.getValue(),\r\n cartId: env.getDevCartId(),\r\n auth: checkAuth,\r\n };\r\n //console.log(\"valu\", value);\r\n post.send(env.apiBase + \"/api/cart/saveshippinginfo\", value);\r\n setSendingStatus(\"pending\");\r\n setAction(\"saveShipping\");\r\n //setGoNext(true);\r\n }\r\n\r\n React.useEffect(() => {\r\n \r\n if (post.done() && sendingStatus === \"pending\" && action === \"saveShipping\"){ \r\n var checkOutForm = document.getElementById(\"stripecheckoutform\");\r\n checkOutForm.innerHTML = \"\";\r\n\r\n var cartId = document.createElement(\"input\");\r\n cartId.value = env.getDevCartId();\r\n cartId.name = \"cartId\"; \r\n checkOutForm.appendChild(cartId);\r\n checkOutForm.submit(); \r\n return;\r\n }\r\n\r\n if (post.done() && sendingStatus === \"pending\") {\r\n\r\n const cart = post.response.results.cartModel;\r\n setSendingStatus(null);\r\n setCart(cart);\r\n if (goNext) {\r\n markAsFilled(currentStep);\r\n moveNext();\r\n }\r\n dispatch({\r\n type: \"SET_STATE\",\r\n payload: {\r\n cartInfo:\r\n post.response.results.cartInfo.totalQuantity === 0\r\n ? 0\r\n : post.response.results.cartInfo.totalQuantity - 1,\r\n },\r\n });\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [post, currentStep]);\r\n\r\n const stepStyle = (index) => {\r\n const locStyle =\r\n index === currentStep\r\n ? style.stepCurrent\r\n : index === currentStep - 1\r\n ? style.stepPrev\r\n : index === currentStep + 1\r\n ? style.stepNext\r\n : style.step;\r\n const movingStyle = index === lastStep ? style.stepLast : null;\r\n return [locStyle, movingStyle];\r\n };\r\n\r\n const next = () => {\r\n markAsFilled(currentStep);\r\n moveNext();\r\n utils.ui.scrollTo(\"#ecmcart\");\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {cart.orderType === 1 &&
Wholse sale order
}\r\n \r\n \r\n {steps.map((step, index) => {\r\n let stepView = null;\r\n switch (step.id) {\r\n case \"orderItems\":\r\n stepView = (\r\n \r\n );\r\n break;\r\n case \"shipping\":\r\n stepView = (\r\n \r\n );\r\n break;\r\n case \"payment\":\r\n stepView = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n return (\r\n \r\n {stepView}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nfunction EmptyCart() {\r\n return (\r\n
\r\n
\r\n

\r\n {\" \"}\r\n Your cart is empty.{\" \"}\r\n

\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\n\r\nexport function useStep(initialSteps){\r\n const [steps, setSteps] = React.useState(initialSteps);\r\n const [currentStep, setCurrentStep] = React.useState(0);\r\n const [lastStep, setLastStep] = React.useState(0);\r\n\r\n const moveNext = () => {\r\n moveTo(currentStep < steps.length ? currentStep + 1 : currentStep)\r\n }\r\n\r\n const movePrev = () => {\r\n moveTo(currentStep > 0 ? currentStep - 1 : 0)\r\n }\r\n\r\n const moveTo = (index) => {\r\n if (!canGo(index)) return\r\n setLastStep(currentStep)\r\n setCurrentStep(index)\r\n // if (!utils.ui.isElementInViewport(navEl.current)) {\r\n // utils.ui.scrollTo(navEl.current)\r\n // }\r\n }\r\n\r\n const markAsFilled = (index) => {\r\n if (!steps[index]) return;\r\n steps[index].filled = true;\r\n setSteps(steps);\r\n }\r\n \r\n function canGo(index) {\r\n if (steps[index] && steps[index].filled) return true;\r\n const maxIndexFilled = Math.max(...steps.map((x, i) => x.filled ? i : -1));\r\n return index <= maxIndexFilled + 1\r\n }\r\n\r\n function canGoNext() {\r\n return currentStep < steps.length && canGo(currentStep + 1)\r\n }\r\n\r\n function canGoPrev() {\r\n return currentStep > 0 && canGo(currentStep - 1)\r\n }\r\n\r\n return { steps, setSteps, currentStep, lastStep, moveTo, moveNext, movePrev, markAsFilled, canGo, canGoNext, canGoPrev}\r\n}","import { fb, validators } from '../../../form';\r\n\r\nexport function getShippingFormData(cart) {\r\n const data = cart || {};\r\n \r\n const shippingMethods = [\r\n { name: 'Shipping', value: \"Standard\" },\r\n { name: 'Pickup', value: \"Pickup\" }\r\n ];\r\n\r\n const shippingCountry = [\r\n { name: 'Australia', value: \"Australia\" },\r\n { name: 'International', value: \"International\" }\r\n ];\r\n\r\n const model = fb.group({\r\n //billingInfo: address(data.billingAddress, data.orderType, data.wholeSaleRegAdrBilling, (data.wholeSaleRegister && data.wholeSaleRegister.mobilePhone) ? data.wholeSaleRegister.mobilePhone : null),\r\n //shippingInfo: address(data.shippingAddress, data.orderType, data.wholeSaleRegAdrShipping, (data.wholeSaleRegister && data.wholeSaleRegister.mobilePhone) ? data.wholeSaleRegister.mobilePhone : null),\r\n //shippingMethod: [data.shippingMethod || '', [], { label: 'Shipping Method', type: 'text' }],\r\n shippingMethod: [data.shippingMethod || '', [], { label: null, type: 'radioList', options : shippingMethods, style : {inline : true} }],\r\n shippingCountry: [data.shippingCountry || 'Australia', [], { label: null, type: 'radioList', options : shippingCountry, style : {inline : true} }],\r\n useSameAddress: [data.useSameAddress || false, [], { label: `Use the same address`, type: 'checkbox' }],\r\n });\r\n return model;\r\n}\r\n\r\nexport function address(model, orderType, wholeSaleRegAdr, mobilePhone) {\r\n const data = model || {};\r\n const _firstName = (data.firstName && data.firstName !== '') ? data.firstName : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.addressFirstName : '';\r\n const _surname = (data.surname && data.surname !== '') ? data.surname : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.addressLastName : '';\r\n const _street1 = (data.street1 && data.street1 !== '') ? data.street1 : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.address : '';\r\n const _suburb = (data.suburb && data.suburb !== '') ? data.suburb : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.city : '';\r\n const _state = (data.state && data.state !== '') ? data.state : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.state : '';\r\n const _postcode = (data.postcode && data.postcode !== '') ? data.postcode : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.postalCode : '';\r\n const _email = (data.email && data.email !== '') ? data.email : (orderType === 1 && wholeSaleRegAdr) ? wholeSaleRegAdr.addressEmail : '';\r\n const _mobile = (data.mobile && data.mobile !== '') ? data.mobile : (orderType === 1) ? mobilePhone : '';\r\n\r\n return fb.group({\r\n firstName: [_firstName, [validators.Required()], { label: 'First Name', type: 'text' }],\r\n surname: [_surname, [validators.Required()], { label: 'Surname', type: 'text' }],\r\n street1: [_street1, [validators.Required()], { label: 'Street', type: 'text' }],\r\n street2: [data.street2 || '', [], { label: null, type: 'text' }],\r\n suburb: [_suburb, [validators.Required()], { label: 'Suburb', type: 'text' }],\r\n state: [_state, [validators.Required()], { label: 'State', type: 'text' }],\r\n postcode: [_postcode, [validators.Required()], { label: 'Postcode', type: 'text' }],\r\n email: [_email, [validators.Required(), validators.Email()], { label: 'Email Address', type: 'email' }],\r\n mobile: [_mobile, [validators.Required()], { label: 'Mobile', type: 'tel' }]\r\n })\r\n}\r\n\r\n// public AddressModel ShippingInfo { get; set; }\r\n// public AddressModel BillingInfo { get; set; }\r\n// public string ShippingMethod { get; set; }\r\n// public bool UseSameAddress { get; set; }\r\n// public string SpecialRequest { get; set; }\r\n\r\n// public string FirstName { get; set; }\r\n// public string Surname { get; set; }\r\n// public string AddressLine { get; set; }\r\n// public string Suburb { get; set; }\r\n// public string State { get; set; }\r\n// public string Postcode { get; set; }\r\n// public string Country { get; set; }\r\n// public string CountryCode { get; set; }\r\n// public string Email { get; set; }\r\n// public string Phone { get; set; }\r\n// public string Mobile { get; set; }","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { ProductItems } from '../../../site/ecm/productList/productItems';\nimport { Cart } from '../../../site/ecm/cart/cart';\n\nexport function EcmItems(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n \n const cssClass = utils.classNames(\n 'cms_item',\n 'ecm',\n item.cssClass || item.anchorName || ''\n );\n\n return cmsOption.isCmsEdit ? (\n \n Type: {item?.itemTypeCode}\n \n ) : (\n \n \n \n );\n}\n\nfunction ItemBranch({ item }) {\n const typeCode = item?.itemTypeCode;\n\n if (typeCode === 'Ecm-ShoppingCart') {\n return ;\n } else if (typeCode === 'Ecm-ProductList') {\n const categories = cmsUtils.payload(item, 'SelectedCategories');\n const mainCategory = cmsUtils.payload(item, 'MainCategory');\n return ;\n }\n return
;\n}\n","import { css } from '@emotion/core';\n\nexport default {\n rotatingReviewPanel: css({\n marginTop: '20px',\n marginBottom: '20px',\n backgroundColor: 'transparent',\n '& .slick-prev:before, .slick-next:before': {\n color: 'black',\n },\n '& .slick-next': {\n right: '-2%',\n },\n '& .slick-prev': {\n left: '-2%',\n },\n }),\n sliderImageWrapper: {\n height: '100%',\n },\n sliderImageWrapper2: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n margin: 'auto',\n width: '92%',\n },\n reviewContent: css({\n textAlign: 'center',\n paddingBottom: '1rem',\n }),\n starsImage: css({\n paddingBottom: '1.5rem',\n margin: 'auto',\n }),\n reviewer: css({\n textAlign: 'center',\n paddingBottom: '1rem',\n }),\n image_icon: css({\n borderColor: 'rgba(255,255,255,0.4)',\n fontFamily: 'Georgia,serif',\n fontSize: '50px',\n textAlign: 'center',\n display: 'inline-block',\n borderRadius: '100px',\n width: '50px',\n height: '50px',\n marginBottom: '33px',\n lineHeight: '70px',\n backgroundSize: 'cover',\n border: '2px solid rgba(0,0,0,0.13)',\n }),\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport Slider from 'react-slick';\nimport utils from '../../../utils';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\n\nexport function RotatingReviewPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames(\n 'cms_item',\n 'rotatingReviewItems',\n item.cssClass || item.anchorName || ''\n );\n\n const RotatingReviewItems = subItems.map((subItem, index) => {\n const reviewContent = cmsUtils.payload(subItem, 'ReviewContent');\n const reviewer = cmsUtils.payload(subItem, 'Reviewer');\n const starsImage = cmsUtils.payload(subItem, 'StarsImage');\n const textColor = cmsUtils.payload(subItem, 'TextColor');\n return (\n
\n
\n \n “\n
\n

\n {reviewContent}\n

\n \n
\n {reviewer}\n
\n
\n \n );\n });\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 4000,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n };\n\n return (\n \n {RotatingReviewItems}\n \n );\n}\n","import { css } from '@emotion/core';\n\nexport default {\n photoSlide: css({\n margin: 'auto',\n }),\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport utils from '../../../utils';\nimport ImageGallery from 'react-image-gallery';\nimport FsLightbox from 'fslightbox-react';\nimport { useState } from 'react';\n\nexport function PhotoSlide(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames(\n 'cms_item',\n 'photoSlide',\n item.cssClass || item.anchorName || ''\n );\n const images = [];\n subItems.map((subItem, index) => {\n subItem.payloads[0].value.split('|').map((value, index) => {\n images.push({\n original: value,\n thumbnail: value,\n });\n return null;\n });\n return null;\n });\n const [toggler, setToggler] = useState(false);\n const [imageUrl, setImageUrl] = useState('');\n const _handleClick = (event) => {\n setImageUrl(event.target.src);\n console.log(imageUrl);\n setToggler(!toggler);\n };\n\n return (\n \n \n \n \n );\n}\n","import React from \"react\";\nimport utils from \"../../utils\";\nimport { items } from \"../../site/_cmsItems/items-generated\";\nimport cmsUtils from \"../utils/cmsUtils\";\nimport { BannerPanel } from \"./bannerPanel/view\";\nimport { BannerItem } from \"./bannerItem/view\";\nimport { Panel } from \"./panel/view\";\nimport { Html } from \"./html/view\";\nimport { ImagePanel } from \"./imagePanel/view\";\nimport { PageTilesBsyc } from \"../../components/tiles/bsyc/view\";\nimport { PageTilesSmall } from \"../../components/tiles/small/view\";\nimport { PageTilesThird } from \"../../components/tiles/third/view\";\nimport { PageTilesFourth } from \"../../components/tiles/fourth/view\";\nimport { PageTilesFifth } from \"../../components/tiles/fifth/view\";\nimport { SingleBanner } from \"./singleBanner/view\";\nimport { ContactForm } from \"./contactForm/view\";\nimport { VideoPanel } from \"./VideoPanel/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 { PhotoGallery } from \"../../components/photoGallery/view\";\nimport { TestimonialPanel } from \"../../components/testimonial/index\";\nimport { ExpandablePanel } from \"../../components/expandablePanel/view\";\nimport { SliderAwardPanel } from \"../../components/SliderAward/index\";\nimport { EcmItems } from \"./ecm/view\";\nimport { RotatingReviewPanel } from \"../../components/RotatingReview/index\";\nimport { PhotoSlide } from \"../../components/PhotoSlide/index\";\n\nexport function Item(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n let itemElt = null;\n const found = utils.array.find(items, (x) => x.match(item, cmsOption));\n if (found) {\n return found.itemElt(item, cmsOption);\n }\n\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 const setting = {\n startRatingColor: \"#2b707d\",\n };\n itemElt = (\n \n );\n } else if (item.itemTypeCode === \"ImagePanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PageTiles\") {\n let _tileType = cmsUtils.payload(item, \"TileType\");\n const tileType = _tileType && _tileType !== \"\" ? _tileType : \"1\";\n if (tileType === \"2\") {\n itemElt = ;\n } else if (tileType === \"3\") {\n itemElt = ;\n } else if (tileType === \"4\") {\n itemElt = ;\n } else if (tileType === \"5\") {\n itemElt = ;\n } else {\n itemElt = ;\n }\n } else if (item.itemTypeCode === \"SingleBanner\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ContactForm\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"VideoPanel\") {\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 === \"PhotoGallery\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ExpandablePanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"SliderAwardPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode?.indexOf(\"Ecm-\") === 0) {\n itemElt = ;\n } else if (item.itemTypeCode === \"RotatingReviewPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PhotoSlide\") {\n itemElt = ;\n } else {\n itemElt =
{item.itemTypeCode}
;\n }\n\n // const subItemsElts = subItems.map((subItem, index) =>\n // \n // );\n return itemElt;\n}\n","import React, { useState, useEffect } from 'react';\r\nimport { useRouter } from '../../../components';\r\nimport { useGet } from '../../../components';\r\nimport { Item } from '../../items/item';\r\nimport { NotFound } from '../../../components';\r\nimport env from '../../../env';\r\nimport { useStore } from '../../../store';\r\nimport { ErrorPopup, Loading } from '../../../components';\r\nimport { useInstagram } from '../../../components';\r\nimport { MetaTag } from '../../../components';\r\nimport cmsUtils from '../../utils/cmsUtils';\r\nimport utils from '../../../utils';\r\nimport { gtm } from '../../../lib/tracking';\r\n\r\nconst log = (...args) => {\r\n //console.log(args);\r\n}\r\nconst areEqual = (prevProps, nextProps) => {\r\n return (prevProps.pageData === nextProps.pageData)\r\n};\r\nconst PageMemo = React.memo(Page, areEqual)\r\n\r\nexport function ViewPage() {\r\n const { dispatch } = useStore();\r\n const [pageLoaded, setPageLoaded] = useState(false);\r\n const [data, setData] = useState(null);\r\n //const path = usePath();\r\n //log('view page', path);\r\n const { pathname, Redirect } = useRouter();\r\n useInstagram();\r\n\r\n const get = useGet();\r\n log('0. viewpage ready');\r\n\r\n useEffect(() => {\r\n log('*. start loading')\r\n setPageLoaded(false);\r\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\r\n // eslint-disable-next-line\r\n }, [pathname]);\r\n\r\n useEffect(() => {\r\n if (data){\r\n dispatch({ type: 'SET_PAGE', payload: data.data })\r\n dispatch({ type: 'SET_MENU', payload: data.menu })\r\n }\r\n // eslint-disable-next-line\r\n }, [data]);\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 //log(router.pathname);\r\n //log(get.loading());\r\n log('1. viewpage component', pageLoaded, get.response);\r\n\r\n\r\n const pageData = get.response.data;\r\n //const menuData = get.response.menu;\r\n const redirectTo = get.response.redirectTo;\r\n\r\n const cmsOption = {};\r\n log(pageLoaded, !pageLoaded && !!pageData)\r\n if (!pageLoaded && pageData) {\r\n //log(pageLoaded, pageData, menuData)\r\n log('2. dispatching page & menu')\r\n setPageLoaded(true);\r\n setData(get.response);\r\n document.title = pageData.pageTitle;\r\n gtm.pageView(pathname, pageData.pageTitle);\r\n return null;\r\n } else if (redirectTo) {\r\n if (redirectTo.indexOf('http') >= 0 && typeof window !== `undefined`) {\r\n return window.location.href = redirectTo;\r\n } else {\r\n return \r\n }\r\n } else if (!pageLoaded && !pageData) {\r\n setPageLoaded(true);\r\n setData(get.response);\r\n return ()\r\n }\r\n\r\n log('3. call rendering memo')\r\n if (pageData)\r\n return ;\r\n else\r\n return \r\n}\r\n\r\n\r\nfunction Page(props) {\r\n const pageData = props.pageData;\r\n const cmsOption = props.cmsOption;\r\n cmsOption.pageData = pageData;\r\n // document.title = pageData.pageTitle;\r\n log('4. page rendering', pageData, cmsOption)\r\n const sectionItems = pageData.sections.map((section, index) => {\r\n return (\r\n
\r\n )\r\n }\r\n );\r\n return (\r\n <>\r\n \r\n
\r\n {sectionItems}\r\n
\r\n \r\n );\r\n}\r\n\r\nfunction Section(props) {\r\n log('5. section rendering')\r\n const item = props.item;\r\n //const sectionName = item.sectionName;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n if (!subItems || subItems.length === 0)\r\n return (<>);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n return (\r\n <>\r\n {subItemsElts}\r\n \r\n );\r\n}\r\n\r\nfunction getMetaTag(pageData) {\r\n //const country = utils.site.isNZ? 'New Zealand' : 'Australia'\r\n const country = \"Australia\";\r\n const siteName = env.siteName;\r\n const titleSuffix = env.titleSuffix;\r\n\r\n return {\r\n title: pageData.pageTitle + ' | ' + titleSuffix,\r\n description: cmsUtils.payload(pageData, 'Description'),\r\n keywords: cmsUtils.payload(pageData, 'Keyword'),\r\n heroImageUrl: utils.site.fullUrl(cmsUtils.payload(pageData, 'ImageUrl')),\r\n language: 'English',\r\n country: country,\r\n siteName: siteName,\r\n url: utils.site.fullUrl(pageData.pageUrl),\r\n //canonical: utils.site.resourcePath(pageData.pageUrl)\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 { CmsPageController } from './cms-page-controller'\r\n\r\nexport class CmsRadioSender {\r\n controller;//: CmsPageController;\r\n constructor(controller) {\r\n this.controller = controller;\r\n }\r\n\r\n sendMessageToParent(action: string, data: any) {\r\n var cloned = JSON.parse(JSON.stringify(data));\r\n if (typeof window !== `undefined`) {\r\n window.parent.postMessage({\r\n action: action,\r\n data: cloned\r\n }, \"*\");\r\n }\r\n }\r\n\r\n saveAllDirtyHtml(htmlChanges) {\r\n // skip another unneccesary round trip\r\n this.sendMessageToParent('return-all-dirty-html', {\r\n returnTo: '_saveAllDirtyHtml',\r\n htmlChanges: htmlChanges\r\n });\r\n }\r\n\r\n selectControllerItem(data) {\r\n this.sendMessageToParent(\"select-controller-item\", data);\r\n }\r\n\r\n returnAllDirtyHtml(returnTo, htmlChanges) {\r\n this.sendMessageToParent('return-all-dirty-html', {\r\n returnTo: returnTo,\r\n htmlChanges: htmlChanges\r\n });\r\n }\r\n\r\n returnHtml(id, html) {\r\n this.sendMessageToParent('return-html', {\r\n id: id,\r\n html: html\r\n });\r\n }\r\n\r\n markDirtyHtml(id) {\r\n this.sendMessageToParent(\"mark-dirty-html-item\", { id: id });\r\n }\r\n}\r\n","//declare var CKEDITOR: any;\r\n//import { CmsPageController } from './cms-page-controller'\r\n\r\nexport class CmsRadioReceiver {\r\n controller;//: CmsPageController;\r\n constructor(controller) {\r\n this.controller = controller;\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (typeof window !== `undefined`) {\r\n var self = this;\r\n window.addEventListener(\"message\", function (e) {\r\n\r\n var action = e.data.action;\r\n var data = e.data.data;\r\n\r\n // console.log(e, \"cms-action-received: \" + action, data);\r\n\r\n if (action === 'select-item') {\r\n self.selectItem(data.itemId)\r\n } else if (action === 'media-selected-ckeditor') {\r\n self.mediaSelectedCKEditor(data)\r\n } else if (action === 'get-all-dirty-html') {\r\n var htmlChanges = self.controller.getAllDirtyHtml();\r\n self.controller.sender.returnAllDirtyHtml(data.returnTo, htmlChanges);\r\n } else if (action === 'get-html') {\r\n var html = self.controller.getHtml(data.id);\r\n self.controller.sender.returnHtml(data.id, html);\r\n } else if (action === 'page-reload') {\r\n window.location.reload();\r\n }\r\n }, false);\r\n }\r\n }\r\n\r\n mediaSelectedCKEditor(data) {\r\n const CKEDITOR = window['CKEDITOR'] || {};\r\n CKEDITOR.tools.callFunction(data.funcNum, data.selectedPath);\r\n }\r\n\r\n selectItem(itemId) {\r\n this.controller.selectItemFromController(itemId);\r\n }\r\n}\r\n","import { CmsRadioSender } from './cms-radio-sender'\r\n// //import * as $ from 'jquery';\r\n// declare var CKEDITOR: any;\r\n// import * as $ from 'jquery';\r\n\r\nexport class CmsHtmlEditor {\r\n ckeditorConfig;\r\n ckeditorStylesSet;\r\n sender;\r\n constructor(cmsEndpoint: string, sender: CmsRadioSender) {\r\n this.ckeditorConfig = {\r\n startupFocus: true,\r\n filebrowserBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectpageormedia', //'/cms/browse',//'/cms/resource/selectfileckeditor',\r\n filebrowserImageBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectmedia', //'/cms/browse?type=rc',//'/cms/resource/selectfileckeditor?type=Images',\r\n extraPlugins: 'sourcedialog,youtubejaba,lineutils,widget,embedjaba,image2',\r\n toolbar: [{\r\n name: 'basicstyles',\r\n groups: ['basicstyles', 'cleanup'],\r\n items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']\r\n },\r\n {\r\n name: 'paragraph',\r\n groups: ['list', 'align'],\r\n items: ['NumberedList', 'BulletedList', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight',\r\n 'JustifyBlock'\r\n ]\r\n },\r\n {\r\n name: 'links',\r\n items: ['Link', 'Unlink', 'Anchor']\r\n },\r\n {\r\n name: 'insert',\r\n items: ['Image', 'Table', 'HorizontalRule', 'PageBreak', 'Iframe', 'Youtube', 'EmbedJaba']\r\n },\r\n '/',\r\n {\r\n name: 'document',\r\n groups: ['mode'],\r\n items: ['Sourcedialog']\r\n },\r\n {\r\n name: 'clipboard',\r\n groups: ['clipboard', 'undo'],\r\n items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']\r\n },\r\n {\r\n name: 'styles',\r\n items: ['Styles', 'Format']\r\n },\r\n {\r\n name: 'colors',\r\n items: ['TextColor', 'BGColor']\r\n },\r\n {\r\n name: 'tools',\r\n items: ['Maximize', 'ShowBlocks']\r\n }\r\n ],\r\n extraAllowedContent: 'style;span;*[id,rel,data-*](*){*}'\r\n }\r\n\r\n this.ckeditorStylesSet = [\r\n /* Block Styles */\r\n\r\n // These styles are already available in the \"Format\" combo (\"format\" plugin),\r\n // so they are not needed here by default. You may enable them to avoid\r\n // placing the \"Format\" combo in the toolbar, maintaining the same features.\r\n /*\r\n { name: 'Paragraph',\t\telement: 'p' },\r\n { name: 'Heading 1',\t\telement: 'h1' },\r\n { name: 'Heading 2',\t\telement: 'h2' },\r\n { name: 'Heading 3',\t\telement: 'h3' },\r\n { name: 'Heading 4',\t\telement: 'h4' },\r\n { name: 'Heading 5',\t\telement: 'h5' },\r\n { name: 'Heading 6',\t\telement: 'h6' },\r\n { name: 'Preformatted Text',element: 'pre' },\r\n { name: 'Address',\t\t\telement: 'address' },\r\n */\r\n { name: 'Title', attributes: { 'class': 'title' } },\r\n { name: 'Special', attributes: { 'class': 'special-font' } }, \r\n { name: 'Effect up', attributes: { 'class': 'aos_effect_up' } },\r\n //{ name: 'Clean Effect up', attributes: { 'class': '' } },\r\n // { name: 'Heading 3', element: 'h1', attributes: { 'class': 'h3' } },\r\n // { name: 'Super paragraph',\t\telement: 'p', attributes: { 'class': 'superparagraph' } },\r\n\r\n //{ name: 'Italic Title',\t\telement: 'h2', styles: { 'font-style': 'italic' } },\r\n //{ name: 'Subtitle',\t\t\telement: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },\r\n //{\r\n //\tname: 'Special Container',\r\n //\telement: 'div',\r\n //\tstyles: {\r\n //\t\tpadding: '5px 10px',\r\n //\t\tbackground: '#eee',\r\n //\t\tborder: '1px solid #ccc'\r\n //\t}\r\n //},\r\n\r\n /* Inline Styles */\r\n\r\n // These are core styles available as toolbar buttons. You may opt enabling\r\n // some of them in the Styles combo, removing them from the toolbar.\r\n // (This requires the \"stylescombo\" plugin)\r\n /*\r\n { name: 'Strong',\t\t\telement: 'strong', overrides: 'b' },\r\n { name: 'Emphasis',\t\t\telement: 'em'\t, overrides: 'i' },\r\n { name: 'Underline',\t\telement: 'u' },\r\n { name: 'Strikethrough',\telement: 'strike' },\r\n { name: 'Subscript',\t\telement: 'sub' },\r\n { name: 'Superscript',\t\telement: 'sup' },\r\n */\r\n\r\n //{ name: 'Marker',\t\t\telement: 'span', attributes: { 'class': 'marker' } },\r\n\r\n //{ name: 'Big',\t\t\t\telement: 'big' },\r\n //{ name: 'Small',\t\t\telement: 'small' },\r\n //{ name: 'Typewriter',\t\telement: 'tt' },\r\n\r\n //{ name: 'Computer Code',\telement: 'code' },\r\n //{ name: 'Keyboard Phrase',\telement: 'kbd' },\r\n //{ name: 'Sample Text',\t\telement: 'samp' },\r\n //{ name: 'Variable',\t\t\telement: 'var' },\r\n\r\n //{ name: 'Deleted Text',\t\telement: 'del' },\r\n //{ name: 'Inserted Text',\telement: 'ins' },\r\n\r\n //{ name: 'Cited Work',\t\telement: 'cite' },\r\n //{ name: 'Inline Quotation',\telement: 'q' },\r\n\r\n //{ name: 'Language: RTL',\telement: 'span', attributes: { 'dir': 'rtl' } },\r\n //{ name: 'Language: LTR',\telement: 'span', attributes: { 'dir': 'ltr' } },\r\n\r\n /* Object Styles */\r\n { name: 'Button', element: 'a', attributes: { 'class': 'button' } },\r\n { name: 'Secondary Button', element: 'a', attributes: { 'class': 'button secondary'}},\r\n { name: 'More link', element: 'a', attributes: { 'class': 'more' } }\r\n //{\r\n //\tname: 'Styled image (left)',\r\n //\telement: 'img',\r\n //\tattributes: { 'class': 'left' }\r\n //},\r\n\r\n //{\r\n //\tname: 'Styled image (right)',\r\n //\telement: 'img',\r\n //\tattributes: { 'class': 'right' }\r\n //},\r\n\r\n //{\r\n //\tname: 'Compact table',\r\n //\telement: 'table',\r\n //\tattributes: {\r\n //\t\tcellpadding: '5',\r\n //\t\tcellspacing: '0',\r\n //\t\tborder: '1',\r\n //\t\tbordercolor: '#ccc'\r\n //\t},\r\n //\tstyles: {\r\n //\t\t'border-collapse': 'collapse'\r\n //\t}\r\n //},\r\n\r\n //{ name: 'Borderless Table',\t\telement: 'table',\tstyles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },\r\n //{ name: 'Square Bulleted List',\telement: 'ul',\t\tstyles: { 'list-style-type': 'square' } }\r\n ]\r\n\r\n this.sender = sender;\r\n }\r\n\r\n show($editor) {\r\n const CKEDITOR = window['CKEDITOR'] || {};\r\n //for ckeditor\r\n // console.log('ckeditor show');\r\n try {\r\n // We need to turn off the automatic editor creation first.\r\n CKEDITOR.disableAutoInline = true;\r\n } catch (e) { }\r\n\r\n var editor = CKEDITOR.inline('cmsCurrentEditor', this.ckeditorConfig);\r\n if (!CKEDITOR.stylesSet.get('default'))\r\n CKEDITOR.stylesSet.add('default', this.ckeditorStylesSet);\r\n\r\n var self = this;\r\n editor.on('change', function (evt) {\r\n // getData() returns CKEditor's HTML content.\r\n //$(\"#cmsCurrentEditor\").addClass(\"dirtyHtml\");\r\n //const itemId = $(\"#cmsCurrentEditor\").data('cms-item-id');\r\n const ed = document.querySelector('#cmsCurrentEditor');\r\n ed.classList.add('dirtyHtml');\r\n const itemId = ed.getAttribute('data-cms-item-id');\r\n\r\n //console.log(itemId);\r\n self.sender.markDirtyHtml(itemId);\r\n //console.log('Total bytes: ' + evt.editor.getData().length);\r\n });\r\n editor.on('paste', function (evt) {\r\n //console.log(evt.data.dataValue);\r\n //evt.data.dataValue = evt.data.dataValue.replace(/ /g, '');\r\n //evt.data.dataValue = evt.data.dataValue.replace(/

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

\").html(item.html());\r\n // if ($tmp.find('.cms-skeleton').length > 0)\r\n // return $tmp.find('.cms-skeleton').html();\r\n // else\r\n // return item.html();\r\n //tmp.find(\".cms_ctrl_in_editor\").each(function (inx, obj) {\r\n // var ctrlid = $(obj).attr(\"data-cms-ctrl-id\");\r\n // $(obj).replaceWith(\"__cms__ctrl:\" + ctrlid + \"__\");\r\n //});\r\n //return tmp.html();\r\n }\r\n\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { useRouter } from '../../../components';\r\nimport { useGet } from '../../../components';\r\nimport { Item } from '../../items/item';\r\nimport env from '../../../env';\r\nimport { loadJs } from '../../../lib/net-loader';\r\nimport { CmsPageController } from '../../services/cms-page-controller';\r\nimport { ErrorPopup, Loading } from '../../../components';\r\n\r\n// function useQuery() {\r\n// return new URLSearchParams(useLocation().search);\r\n// }\r\n\r\nexport function EditPage(props) {\r\n //const [page, setPage] = useState(null);\r\n\r\n //const pageId = props.pageId;\r\n const { query } = useRouter();\r\n const { cmsViewMode = 'edit', id, publishVer, editVer } = query;\r\n const pageId = id;\r\n\r\n //console.log(pageId, cmsViewMode, env.apiBase, env)\r\n\r\n const get = useGet();\r\n useEffect(() => {\r\n get.send(env.apiBase + '/api/cms/GetPage/' + pageId + '?cmsViewMode=' + cmsViewMode\r\n + (publishVer ? '&publishVer=' + publishVer : '')\r\n + (editVer ? '&editVer=' + editVer : '')\r\n );\r\n // eslint-disable-next-line\r\n }, [pageId]);\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(router.pathname);\r\n //console.log(res);\r\n\r\n const pageData = get.response.data;\r\n const cmsOption = { isCmsEdit: true, cmsViewMode: cmsViewMode };\r\n cmsOption.pageData = pageData;\r\n\r\n const cmsPageController = new CmsPageController();\r\n if (cmsViewMode !== 'viewonly') {\r\n const ver = 1;\r\n loadJs(\r\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\r\n ).then(data => {\r\n return loadJs(\r\n env.resourceBase + '/dist/cms/ckeditor/ckeditor.js?v=' + ver\r\n )\r\n }).then(data => {\r\n // console.log('script loaded ', data);\r\n cmsPageController.init({});\r\n document.querySelector('body').classList.add('cmsedit');\r\n }).catch(error => console.log(error));\r\n } else {\r\n const ver = 1;\r\n loadJs(\r\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\r\n ).then(data => {\r\n cmsOption.isCmsEdit = false;\r\n cmsPageController.init({ viewOnly: true });\r\n }).catch(error => console.log(error));\r\n }\r\n\r\n //setPage(res.response.data);\r\n const sectionItems = pageData.sections.map((section, index) =>\r\n
\r\n );\r\n return (\r\n
\r\n {sectionItems}\r\n
\r\n );\r\n}\r\n\r\n\r\nfunction Section(props) {\r\n const item = props.item;\r\n //const sectionName = item.sectionName;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n\r\n if (!subItems || subItems.length === 0)\r\n return (<>);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n return (\r\n <>\r\n {subItemsElts}\r\n \r\n );\r\n}\r\n\r\n","import React from 'react';\r\nimport { useRouter } from '../../components';\r\n\r\nexport function SearchBar({onCloseMenu}) {\r\n const [keyword, setKeyword ] = React.useState('')\r\n const { navigate } = useRouter();\r\n function search(e) {\r\n e.preventDefault();\r\n onCloseMenu();\r\n navigate('/search?q=' + encodeURIComponent(keyword))\r\n }\r\n function onChange(e) {\r\n setKeyword(e.target.value);\r\n }\r\n return (\r\n
search(e)}>\r\n \r\n
);\r\n\r\n}\r\n","import React, {useState, useEffect } from 'react';\r\nimport { SiteLink } from '../../components';\r\nimport { useStore } from '../../store';\r\n\r\nimport { FaChevronDown } from 'react-icons/fa';\r\nimport { SearchBar } from './searchBar';\r\n//import { useAuth } from \"auth\";\r\n\r\nexport function NavBar(props) {\r\n const open = props.open;\r\n //const currentLocation = props.currentLocation;\r\n const { state } = useStore();\r\n\r\n const menu = state.menu || { items: [] };\r\n const currentLocation = state.history && state.history.length > 0? state.history[state.history.length - 1].path : '';\r\n const depth = 1;\r\n const menuItemElts = menu.items.map((item, index) =>\r\n \r\n );\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
);\r\n\r\n}\r\n\r\nfunction MenuItem(props) {\r\n const [subMenuOpened, setSubMenuOpened] = useState(false);\r\n const item = props.item;\r\n const subItems = item.items || [];\r\n const currentLocation = props.currentLocation;\r\n\r\n const subItemsElts = subItems.length > 0? subItems.map((subItem, index) =>\r\n \r\n ) : null;\r\n\r\n\r\n useEffect(() => {\r\n //console.log('navbar', currentLocation);\r\n setSubMenuOpened(false);\r\n }, [currentLocation])\r\n\r\n function closeMenu() {\r\n props.onCloseMenu();\r\n }\r\n\r\n function toggleSubmenu(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setSubMenuOpened(!subMenuOpened);\r\n }\r\n\r\n return (\r\n
  • \r\n closeMenu()}>\r\n {item.title}\r\n {subItemsElts && toggleSubmenu(e)}>}\r\n \r\n {subItemsElts &&\r\n
      \r\n {subItemsElts}\r\n
    }\r\n
  • \r\n )\r\n}\r\n\r\nfunction SubMenuItem(props) {\r\n const item = props.item;\r\n function closeMenu() {\r\n props.onCloseMenu();\r\n }\r\n\r\n return (\r\n
  • \r\n closeMenu()}>\r\n {item.title}\r\n \r\n
  • \r\n )\r\n}\r\n\r\nfunction AuthMenuItem({onCloseMenu, state}){\r\n \r\n //const [checkAuth, setCheckAuth ] = React.useState(null);\r\n // useEffect(() => {\r\n // const fetch = async () => {\r\n // if(state.authCheck && state.authCheck ==){\r\n\r\n // }\r\n // };\r\n // fetch();\r\n\r\n // // eslint-disable-next-line\r\n // }, []);\r\n\r\n\r\n //state.authCheck && state.authCheck === true\r\n\r\n // if(checkAuth === null || checkAuth === false){\r\n // return null;\r\n // }\r\n\r\n // return(\r\n //
    \r\n // onCloseMenu()}>\r\n // Wholesale Dashboard\r\n // \r\n //
    \r\n // )\r\n\r\n // if(state.authCheck && state.authCheck === true){\r\n // return(\r\n //
    \r\n // onCloseMenu()}>\r\n // Wholesale Dashboard\r\n // \r\n //
    \r\n // )\r\n // }\r\n // return null;\r\n\r\n return(\r\n
    \r\n onCloseMenu()}>\r\n Wholesale Dashboard {state.userFirstName && state.userFirstName !== '' && (\" - Welcome, \" + state.userFirstName)}\r\n \r\n
    \r\n )\r\n}","import { css } from '@emotion/core';\nimport { mq } from '../../cssInJs';\nexport default {\n button: css(mq({\n position: 'absolute',\n left: '1rem',\n // lineHeight: '1.6rem',\n display: 'flex',\n alignItems: 'center',\n color: '#ddd',\n fontSize: ['20px', null, '30px'],\n '&:hover': {\n textDecoration: 'none'\n }\n })),\n back_text: css(mq({\n fontSize: '14px',\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 \n BACK\n )\n } else {\n return null;\n }\n}","import { css } from '@emotion/core';\r\nimport { mq } from '../../cssInJs';\r\n\r\nconst rs = [\r\n { w: 44, h: 44, barW: 28, barH: 3, space: 8 },\r\n { w: 56, h: 56, barW: 44, barH: 3, space: 10 }\r\n]\r\n\r\nconst line = css(mq({\r\n width: [rs[0].barW, null, rs[1].barW],\r\n height: [rs[0].barH, null, rs[1].barH],\r\n borderRadius: '4px',\r\n position: 'absolute',\r\n transitionProperty: 'transform',\r\n backgroundColor: '#fff',\r\n display: 'block',\r\n transitionDuration: '0.15s',\r\n transitionDelay: '0.15s',\r\n transitionTimingFunction: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\r\n}))\r\n\r\nexport default {\r\n button: css(mq({\r\n cursor: 'pointer',\r\n zIndex: '1000',\r\n position: 'fixed',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'all 0.3s ease-in-out',\r\n padding: '0',\r\n //top: [0, null, 12],\r\n top: 0,\r\n width: [rs[0].w, null, rs[1].w],\r\n height: [rs[0].h, null, rs[1].h],\r\n right: [0, null, 20],\r\n background: 'transparent', //variables.primaryColor,\r\n border: 'none',\r\n outline: 'none',\r\n font: 'inherit',\r\n color: 'inherit',\r\n textTransform: 'none',\r\n '&:focus': {\r\n outline: 'none',\r\n }\r\n })),\r\n\r\n buttonScrolled: css(mq({\r\n top: [0, null, 0]\r\n })),\r\n\r\n hamburger: css(mq({\r\n width: [rs[0].barW, null, rs[1].barW],\r\n height: [rs[0].barH + rs[0].space * 2, null, rs[1].barH + rs[1].space * 2],\r\n position: 'relative',\r\n display: 'block',\r\n })),\r\n\r\n line1: css(mq(line, {\r\n top: 0,\r\n transition: 'top 0.3s 0.1s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s 0.1s linear',\r\n })),\r\n line2: css(mq(line, {\r\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)',\r\n top: [rs[0].space, null, rs[1].space],\r\n })),\r\n line3: css(mq(line, {\r\n top: [rs[0].space * 2, null, rs[1].space * 2],\r\n })),\r\n\r\n lineActive1: css({\r\n opacity: '0',\r\n top: 18,\r\n transition: 'top 0.3s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.2s linear',\r\n }),\r\n lineActive2: css({\r\n transform: 'rotate(-135deg)',\r\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)',\r\n }),\r\n lineActive3: css(mq({\r\n transform: [`translate3d(0, -${rs[0].space}px, 0) rotate(-45deg)`, null, `translate3d(0, -${rs[1].space}px, 0) rotate(-45deg)`],\r\n transitionDelay: '0.32s',\r\n transitionTimingFunction: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\r\n }))\r\n}","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport style from './hamburgerStyle';\r\n\r\nexport function Hamburger({ opened, toggleMenu, scrolled }) {\r\n\r\n return \r\n}","import { css } from '@emotion/core';\nimport { mq, variables } from '../../cssInJs';\n\nexport default {\n top: css(\n mq({\n height: [44, null, 56],\n background: '#000',\n position: 'fixed',\n width: '100%',\n zIndex: '999',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'all 0.3s',\n })\n ),\n\n line__container: mq({\n position: 'fixed',\n top: ['44px', null, '56px'],\n width: '100%',\n zIndex: 2,\n }),\n\n topScrolled: css(\n mq({\n background: '#000',\n })\n ),\n logo: css(mq({})),\n logoImg: css(\n mq({\n display: 'block',\n height: [100, null, 150],\n marginTop: ['5rem', null, '6.4rem'],\n transition: 'all .2s',\n })\n ),\n logoScrolled: css(\n mq({\n img: css(\n mq({\n height: [87, null, 124],\n marginTop: ['5rem', null, '5.5rem'],\n })\n ),\n })\n ),\n\n shopping__cart: mq({\n position: 'absolute',\n right: ['50px', null, '100px'],\n color: 'white',\n cursor: 'pointer',\n svg: mq({\n width: '30px',\n height: '30px',\n }),\n }),\n\n shopping__cart__scrolled: {},\n\n shopping__cart__num: mq({\n position: 'absolute',\n display: 'flex',\n width: ['20px', null, '30px'],\n height: ['20px', null, '30px'],\n backgroundColor: 'red',\n borderRadius: '50%',\n justifyContent: 'center',\n alignItems: ['center', 'end'],\n top: ['-3px', null, '-8px'],\n left: ['-9px', null, '-15px'],\n }),\n hr: mq({\n marginTop: '0',\n marginBottom: '0',\n borderTop: ['6px solid', null, '7.5px solid'],\n }),\n hr__1: {\n borderTopColor: variables.colorRed + ' !important',\n },\n hr__2: {\n borderTopColor: variables.colorYellow + ' !important',\n },\n};\n","var _style, _polygon, _path, _path2;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgSearchBlack = function SvgSearchBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 465 456\",\n style: {\n enableBackground: \"new 0 0 465 456\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\n\\t.st0{fill:none;stroke:#111111;stroke-width:14;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:22.9256;}\\n\")), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st0\",\n points: \"418.9,379.3 386.2,412 302.2,328.1 335.5,295.9 418.9,379.3 \"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M219.5,73.6c76.8,0,139.1,62.3,139.1,139.1c0,76.8-62.3,139.1-139.1,139.1c-76.8,0-139.1-62.3-139.1-139.1 C80.4,135.9,142.7,73.6,219.5,73.6L219.5,73.6z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M218.2,113c55.6,0,100.7,45.1,100.7,100.7\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSearchBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/search-black.78a11d1e.svg\";\nexport { ForwardRef as ReactComponent };","//import { css } from '@emotion/core';\nimport { mq } from '../../cssInJs';\n\nexport default{\n \n container : mq({\n cursor: 'pointer',\n zIndex: '1000',\n position: 'fixed',\n padding: '0',\n right: ['100px',null,'130px','152px','152px'],\n display: ['none','block']\n //border: '1px solid red'\n }),\n flexContainer : {\n display: 'flex',\n transition: 'all 0.5s ease-in-out',\n '&.open' : mq({ \n //backgroundColor: 'rgba(255,255,255,0.7)',\n //backgroundColor: ['unset',null,null,null,'rgba(255,255,255,0.7)']\n backgroundColor: ['unset',null,null,null,'rgb(222, 212, 191)']\n }),\n },\n buttonContainer : mq({\n\n width : ['40px',null,'50px'],\n height : ['40px',null,'50px'],\n\n color: 'white',\n display: 'flex',\n alignItems: 'center',\n zIndex: 2,\n 'svg' : {\n width:'100%',\n height:'100%',\n color: 'white',\n '&:hover' : {\n '.st0' : {\n stroke:'#FFFFFF'\n }\n }\n },\n '.st0' : {\n transition: 'all 0.5s ease-in-out',\n //color : 'white',\n stroke:'#FFFFFF'\n }\n }),\n\n form : mq({\n //backgroundColor: 'rgba(255,255,255,0.7)',\n paddingLeft: '10px',\n paddingRight: '10px',\n transition: 'all 0.5s ease-in-out',\n maxWidth: '0px',\n opacity: 0,\n display: 'none',\n '&.open' : {\n maxWidth: '700px',\n opacity: 1,\n display: ['none',null,null,null,'block'],\n width:['0px',null,null,null,'300px', '380px'],\n }\n }),\n\n formForMobile :mq({\n position: 'absolute',\n top:'60px',\n right:'0px',\n display: 'none',\n backgroundColor: 'white',\n height:'50px',\n '&.open' : {\n maxWidth: '700px',\n opacity: 1,\n display: ['block',null,null,null,'none'],\n width:['280px','300px',null,'380px','0px'],\n }\n }),\n\n input : {\n height: '100%',\n width:'100%',\n border: 'none',\n outline: 'none',\n backgroundColor: '#ded4bf',\n color : '#464934',\n '&::placeholder' : {\n color:'#464934',\n fontWeight: 600\n }\n },\n scrolled : {\n // 'svg' : {\n // color: 'white !important'\n // },\n '.st0' : {\n stroke:'#FFFFFF'\n }\n }\n}\n\n\n//right: ['72px',null, null, '150px', '150px'],","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './searchButtonStyle';\n//import { FaSearch } from 'react-icons/fa';\nimport { useState, Fragment } from 'react';\nimport { useRouter } from '../../components';\nimport { ReactComponent as SearchBlck } from './search-black.svg';\n\nexport function SearchButton({ scrolled }) {\n const [info, setInfo] = useState({\n openInput: false\n });\n\n const [keyword, setKeyword] = useState('')\n const { navigate } = useRouter();\n\n function search(e) {\n e.preventDefault();\n setInfo({ ...info, openInput: false });\n setKeyword('');\n //onCloseMenu();\n navigate('/search?q=' + encodeURIComponent(keyword))\n }\n\n function onChange(e) {\n setKeyword(e.target.value);\n }\n\n return (\n \n
    \n
    \n
    \n
    search(e)}>\n \n
    \n
    \n {\n setInfo({ ...info, openInput: !info.openInput });\n }} />\n
    \n
    \n
    search(e)}>\n \n
    \n
    \n
    \n
    \n )\n}","import { mq } from '../../cssInJs';\n\nexport default{\n container : mq({\n cursor: 'pointer',\n zIndex: '1000',\n position: 'fixed',\n padding: '0',\n //top: 4,\n right: ['50px',null,'80px'],\n //border: '1px solid red'\n }),\n countContainer : mq({\n width:['40px',null,'50px'],\n height:['40px',null,'50px'],\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n 'svg' : mq({\n width : ['90%'],\n height : ['90%'],\n color: 'white',\n })\n }),\n count : mq({\n position: 'absolute',\n backgroundColor: 'red',\n color: 'white',\n borderRadius: '20px',\n padding: '0rem 0.2rem',\n lineHeight: '1',\n top: ['3px', null, '0px'],\n right: '5px'\n //left : ['1.5rem', null, '2rem']\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './cartButtonStyle';\nimport { SiteLink } from '../../components';\nimport { useStore } from '../../store';\nimport { MdShoppingCart } from \"react-icons/md\";\n//import { useState, Fragment } from 'react';\n\nexport function CartButton(){\n\n const { state } = useStore();\n\n return(\n
    \n \n
    \n {state.cartInfo ? state.cartInfo : 0} \n \n
    \n
    \n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n\nimport { useState, Fragment } from \"react\";\nimport { SiteLink } 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//import { MdAddShoppingCart } from \"react-icons/md\";\n//import { useStore } from \"../../store\";\nimport { SearchButton } from \"../searchButton/searchButton\";\nimport { CartButton } from '../cartButton/cartButton';\n\nexport function TopHeader(props) {\n const [menuOpened, setMenuOpened] = useState(false);\n const [scrolled, setScrolled] = useState(false);\n //const { state } = useStore();\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 return (\n \n
    \n \n \n \n \n\n \n\n {/* {\n props.openAddEnquiryForm();\n }}\n >\n
    \n \n
    \n {state.addToQuote ? state.addToQuote : 0}\n
    \n
    \n\n */}\n\n \n \n \n \n
    \n {/*
    \n
    \n
    \n
    */}\n
    \n );\n}","import React from 'react';\nimport { useRouter } from '../../components';\nimport { SiteLink } from '../../components';\n//import BottomDrawer from '../../components/bottomDrawer'\n\nexport function BottomDock(props) {\n const links = [\n {\n url: '/products',\n title: 'Products',\n icon: 'Shop.svg',\n iconHover: 'Shop-hover.svg',\n },\n {\n url: '/recipes',\n title: 'Recipes',\n icon: 'experiences.svg',\n iconHover: 'experiences-hover.svg',\n },\n {\n url: '/wholesale',\n title: 'Wholesale',\n icon: 'wholesale.svg',\n iconHover: 'wholesale-hover.svg',\n },\n {\n url: '/corporate-gifting',\n title: 'Corporate',\n icon: 'Corporate-Gifting.svg',\n iconHover: 'Corporate-Gifting-hover.svg',\n },\n {\n url: '/fundraise',\n title: 'Fundraising',\n icon: 'Fundraising.svg',\n iconHover: 'Fundraising-hover.svg',\n },\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 \n \n
    \n
    {link.title}
    \n \n \n ));\n\n return (\n <>\n \n \n );\n}\n","import React from 'react';\r\nimport { useStore } from '../../store';\r\nimport FsLightbox from 'fslightbox-react';\r\n\r\nexport function CommonVideoPopup(props) {\r\n const { state } = useStore();\r\n\r\n const [toggler, setToggler] = React.useState(false);\r\n const [sources, setSources] = React.useState([]);\r\n const [popupIndex, setPopupIndex] = React.useState(0);\r\n\r\n const popup = state.popup;\r\n //console.log(popup, JSON.stringify((popup && popup.sources) || []), JSON.stringify(sources), (popup && popup.popupIndex), popupIndex)\r\n if (JSON.stringify((popup && popup.sources) || []) !== JSON.stringify(sources) ||\r\n ((popup && popup.popupIndex) || 0) !== popupIndex) {\r\n setSources(popup.sources);\r\n setPopupIndex(popup.popupIndex);\r\n setTimeout(() => { setToggler(!toggler) }, 10)\r\n } else {\r\n\r\n }\r\n //console.log(toggler, popupIndex, sources)\r\n return (\r\n
    \r\n {\r\n }}\r\n />\r\n
    \r\n\r\n );\r\n}","import React from 'react';\r\nimport { useRouter } from './components';\r\nimport { useHistoryStore } from './components';\r\nimport { useParallax } from './components';\r\nimport utils from './utils';\r\nimport debounce from \"lodash/debounce\";\r\n\r\nexport function AppRouteChanged() {\r\n const { path } = useRouter();\r\n const parallax = useParallax();\r\n const history = useHistoryStore();\r\n\r\n React.useLayoutEffect(() => {\r\n //console.log('route changed', path)\r\n const scrolled = debounce((e) => saveScrollPosition(e, path), 100)\r\n\r\n\r\n history.push({ path: path })\r\n if (typeof window !== `undefined`) {\r\n parallax.reset();\r\n\r\n const pos = getPreviousPostition(path)\r\n // console.log('pos', pos)\r\n if (pos) {\r\n setTimeout(() => {\r\n window.scrollTo(pos.scrollLeft, pos.scrollTop)\r\n }, 500)\r\n } else {\r\n const hash = window.location.hash;\r\n if (hash) {\r\n setTimeout(() => {\r\n const anchor = utils.ui.findElement(hash);\r\n if (anchor)\r\n utils.ui.scrollTo(anchor, 500);\r\n }, 500)\r\n } else {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n }\r\n\r\n document.body.style.overflow = \"unset\";\r\n window.addEventListener('scroll', scrolled);\r\n return () => {\r\n window.removeEventListener('scroll', scrolled)\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [path]);\r\n\r\n return null;\r\n}\r\n\r\n//#region scroll position store\r\n\r\nfunction saveScrollPosition(e, path) {\r\n if (typeof window === `undefined`) return;\r\n const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft\r\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop\r\n // console.log('save position', path, scrollTop, scrollLeft)\r\n setPositionData(path, scrollLeft, scrollTop)\r\n}\r\n\r\nfunction getPreviousPostition(path) {\r\n const dataArr = getPositionData() || []\r\n // console.log(dataArr.length)\r\n const pos = getPreviousPostitionInArray(dataArr, path)\r\n return pos\r\n}\r\n\r\nfunction getPositionData() {\r\n const dataStr = localStorage.getItem('scrollPosRouter')\r\n // console.log(dataStr)\r\n if (dataStr) {\r\n let data\r\n try {\r\n data = JSON.parse(dataStr)\r\n } catch (e) { return null }\r\n return data\r\n }\r\n return null\r\n}\r\n\r\nfunction setPositionData(path, scrollLeft, scrollTop) {\r\n const dataArr = getPositionData() || []\r\n setCurrentPositionInArray(dataArr, path, scrollLeft, scrollTop)\r\n // console.log(dataArr)\r\n localStorage.setItem('scrollPosRouter', JSON.stringify(dataArr))\r\n}\r\n\r\nconst MAX_SIZE = 5\r\nfunction setCurrentPositionInArray(dataArr, path, scrollLeft, scrollTop) {\r\n const same = dataArr.length > 0 && dataArr[dataArr.length - 1].path === path\r\n if (same) {\r\n const found = dataArr[dataArr.length - 1]\r\n found.scrollLeft = scrollLeft\r\n found.scrollTop = scrollTop\r\n found.ts = new Date()\r\n } else {\r\n if (dataArr.length >= MAX_SIZE) dataArr.shift()\r\n dataArr.push({\r\n path: path,\r\n scrollLeft: scrollLeft,\r\n scrollTop: scrollTop,\r\n ts: new Date()\r\n })\r\n }\r\n}\r\n\r\nfunction getPreviousPostitionInArray(dataArr, path) {\r\n const foundIndex = findIndexReverse(dataArr, x => x.path === path)\r\n // console.log(foundIndex, dataArr.length - 1)\r\n if (foundIndex >= 0 && foundIndex >= dataArr.length - 2) {\r\n // remove after the index\r\n if (foundIndex < dataArr.length - 1) {\r\n dataArr.splice(foundIndex + 1)\r\n localStorage.setItem('scrollPosRouter', JSON.stringify(dataArr))\r\n }\r\n return dataArr[foundIndex]\r\n }\r\n return null\r\n}\r\n\r\nfunction findIndexReverse(list, fn) {\r\n if (!list) return -1;\r\n for (let i = list.length - 1; i >= 0; i--) {\r\n if (fn(list[i])) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n//#endregion","import React, { useState, useEffect } from 'react';\r\nimport { useGet } from '../../../components';\r\nimport { Item } from '../../items/item';\r\nimport { NotFound } from '../../../components';\r\nimport env from '../../../env';\r\nimport { useStore } from '../../../store';\r\nimport { ErrorPopup, Loading } from '../../../components';\r\n\r\nconst log = (...args) => {\r\n //console.log(args);\r\n}\r\nconst areEqual = (prevProps, nextProps) => {\r\n return (prevProps.pageData === nextProps.pageData)\r\n};\r\nconst PageMemo = React.memo(Page, areEqual)\r\n\r\nexport function ViewPartial({pageOptions = null}) {\r\n const { dispatch } = useStore();\r\n const [pageLoaded, setPageLoaded] = useState(false);\r\n const [data, setData] = useState(null);\r\n //const path = usePath();\r\n //log('view page', path);\r\n const pathname = '/partials/common-footer';\r\n\r\n const get = useGet();\r\n log('0. viewpage ready');\r\n\r\n useEffect(() => {\r\n log('*. start loading')\r\n setPageLoaded(false);\r\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\r\n // eslint-disable-next-line\r\n }, [pathname]);\r\n\r\n useEffect(() => {\r\n if (data){\r\n dispatch({ type: 'SET_PAGE', payload: data.data })\r\n dispatch({ type: 'SET_MENU', payload: data.menu })\r\n }\r\n // eslint-disable-next-line\r\n }, [data]);\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 //log(router.pathname);\r\n //log(get.loading());\r\n log('1. viewpage component', pageLoaded, get.response);\r\n\r\n\r\n const pageData = get.response.data;\r\n //const menuData = get.response.menu;\r\n const cmsOption = { pageOptions: pageOptions};\r\n log(pageLoaded, !pageLoaded && !!pageData)\r\n if (!pageLoaded && pageData) {\r\n //log(pageLoaded, pageData, menuData)\r\n log('2. dispatching page & menu')\r\n setPageLoaded(true);\r\n setData(get.response);\r\n\r\n //document.title = pageData.pageTitle;\r\n return null;\r\n } else if (!pageData) {\r\n return ()\r\n }\r\n\r\n log('3. call rendering memo')\r\n return ;\r\n}\r\n\r\n\r\nfunction Page(props) {\r\n const pageData = props.pageData;\r\n const cmsOption = props.cmsOption;\r\n // document.title = pageData.pageTitle;\r\n log('4. page rendering', pageData, cmsOption)\r\n const sectionItems = pageData.sections.map((section, index) => {\r\n return (\r\n
    \r\n )\r\n }\r\n );\r\n return (\r\n <>\r\n {sectionItems}\r\n \r\n );\r\n}\r\n\r\nfunction Section(props) {\r\n log('5. section rendering')\r\n const item = props.item;\r\n //const sectionName = item.sectionName;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n if (!subItems || subItems.length === 0)\r\n return (<>);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n return (\r\n <>\r\n {subItemsElts}\r\n \r\n );\r\n}\r\n\r\n","import { fb, validators } from '../../../lib/form';\r\nexport function getEnquiryFormModel(data) {\r\n const model = fb.group({\r\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\r\n phone: [data.phone || '', [validators.Required()], { label: 'Phone', type: 'text' }],\r\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\r\n enquiry: [data.enquiry || '', [validators.Required()], { label: 'Enquiry', type: 'textarea' }]\r\n //attachments: [data.attachments || '', [], { label: 'Attachments', type: 'file' }]\r\n }); \r\n return model;\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { useGet } from '../../../components';\r\nimport { Item } from '../../items/item';\r\nimport { NotFound } from '../../../components';\r\nimport env from '../../../env';\r\n//import { useStore } from '../../../store';\r\nimport { ErrorPopup, Loading } from '../../../components';\r\n\r\nconst log = (...args) => {\r\n //console.log(args);\r\n}\r\nconst areEqual = (prevProps, nextProps) => {\r\n return (prevProps.pageData === nextProps.pageData)\r\n};\r\nconst PageMemo = React.memo(Page, areEqual)\r\n\r\nexport function ProductPagePartial({pageOptions = null}) {\r\n //const { dispatch } = useStore();\r\n const [pageLoaded, setPageLoaded] = useState(false);\r\n //const [data, setData] = useState(null);\r\n //const path = usePath();\r\n //log('view page', path);\r\n const pathname = '/partials/common-product-page-footer';\r\n const get = useGet();\r\n log('0. viewpage ready');\r\n\r\n useEffect(() => {\r\n log('*. start loading')\r\n setPageLoaded(false);\r\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\r\n // eslint-disable-next-line\r\n }, [pathname]);\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 //log(router.pathname);\r\n //log(get.loading());\r\n log('1. viewpage component', pageLoaded, get.response);\r\n\r\n\r\n const pageData = get.response.data;\r\n //const menuData = get.response.menu;\r\n const cmsOption = { pageOptions: pageOptions};\r\n log(pageLoaded, !pageLoaded && !!pageData)\r\n if (!pageLoaded && pageData) {\r\n //log(pageLoaded, pageData, menuData)\r\n log('2. dispatching page & menu')\r\n setPageLoaded(true);\r\n //document.title = pageData.pageTitle;\r\n return null;\r\n } else if (!pageData) {\r\n return ()\r\n }\r\n\r\n log('3. call rendering memo')\r\n return ;\r\n}\r\n\r\n\r\nfunction Page(props) {\r\n const pageData = props.pageData;\r\n const cmsOption = props.cmsOption;\r\n // document.title = pageData.pageTitle;\r\n log('4. page rendering', pageData, cmsOption)\r\n const sectionItems = pageData.sections.map((section, index) => {\r\n return (\r\n
    \r\n )\r\n }\r\n );\r\n return (\r\n <>\r\n {sectionItems}\r\n \r\n );\r\n}\r\n\r\nfunction Section(props) {\r\n log('5. section rendering')\r\n const item = props.item;\r\n //const sectionName = item.sectionName;\r\n const subItems = item.items || [];\r\n const cmsOption = props.cmsOption || {};\r\n if (!subItems || subItems.length === 0)\r\n return (<>);\r\n\r\n const subItemsElts = subItems.map((subItem, index) =>\r\n \r\n );\r\n return (\r\n <>\r\n {subItemsElts}\r\n \r\n );\r\n}\r\n\r\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport style from \"./productViewStyle\";\nimport React, { useState, useEffect, Fragment } from \"react\";\nimport env from \"../../../env\";\nimport utils from \"../../../utils\";\nimport {\n ErrorPopup,\n Loading,\n Button,\n ErrorMessage,\n useGet,\n usePost,\n useRouter,\n} from \"../../../components\";\nimport { ViewPartial } from \"../../../cms/pages/partials/viewPartial\";\n//import { CommonProductBottom } from '../../../cms/pages/partials/commonProductBottom';\n//import { ProductTile } from '../productList/productTile';\nimport FsLightbox from \"fslightbox-react\";\nimport { MetaTag } from \"../../../components\";\nimport { AddToCart } from \"./addToCart\";\nimport Slider from \"react-slick\";\nimport { MdFavorite } from \"react-icons/md\";\n//import { debounce } from '../../../lib/utils-core/debounce';\nimport { gtm } from \"../../../lib/tracking\";\n//import { FacebookShareButton, FacebookIcon, PinterestShareButton, PinterestIcon } from \"react-share\";\nimport { createPortal } from \"react-dom\";\nimport { getEnquiryFormModel } from \"./enquiryFormModel\";\nimport { useForm } from \"../../../form\";\nimport { ProductPagePartial } from \"../../../cms/pages/partials/productPagePartial\";\n//import { useStore } from '../../../store';\nimport { Document, Page } from \"react-pdf/dist/entry.webpack\";\nimport { useAuth } from \"auth\";\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 ProductView(props) {\n const { query } = useRouter();\n const [loaded, setLoaded] = React.useState(false);\n const get = useGet();\n const productCode = query.id || \"\";\n const category = query.category || \"\";\n const slug = query.slug || \"\";\n\n React.useEffect(() => {\n console.log(\"productview use effect\");\n const url = `/api/product/getProduct/${slug}`;\n get.send(env.apiBase + url);\n setLoaded(false);\n \n // eslint-disable-next-line\n }, [productCode, slug]);\n\n if (get.loading()) {\n return ;\n } else if (get.hasErrors()) {\n return ;\n }\n\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\nfunction CheckAuthView({ product }){\n const auth = useAuth();\n const [checkAuth, setCheckAuth ] = useState(null);\n useEffect(() => {\n const fetch = async () => {\n if (await auth.loggedIn()){\n setCheckAuth(true);\n }\n else{\n setCheckAuth(false);\n }\n };\n fetch();\n\n // eslint-disable-next-line\n }, []);\n\n return(\n \n {\n checkAuth === null ? : \n }\n \n )\n}\n\nfunction Product({ product, checkAuth }) {\n \n const mainPhoto =\n product.productImages.length > 0\n ? {\n imageUrl: product.productImages[0].imageUrl,\n alt: product.productImages[0].alt\n ? product.productImages[0].alt\n : product.productName,\n }\n : { imageUrl: \"/assets/logos/logo.png\", alt: product.productName };\n\n const allPhotos = product.productImages || [];\n const popupImages = allPhotos.map((x) => x.imageUrl);\n const [heroImage, setHeroImage] = React.useState(mainPhoto);\n const [openPopup, setOpenPopup] = useState(false);\n const [pdfViewPath, setPdfViewPath] = React.useState();\n const [pdfViewNumPages, setPdfViewNumPages] = React.useState();\n const [pdfViewWidth, setPdfViewWidth] = React.useState(window.innerWidth);\n const [pdfViewScale, setPdfViewScale] = React.useState(false);\n const [toggler, setToggler] = React.useState(false);\n const [popupIndex, setPopupIndex] = React.useState(0);\n const enquiryFormModel = getEnquiryFormModel({});\n const enquiryForm = useForm(enquiryFormModel, { usePlaceholder: true });\n const enquiryFormRender = (name) => enquiryForm.renderControl(name, null);\n const post = usePost();\n const [sendingStatus, setSendingStatus] = React.useState(null);\n\n const [variantOptions, setVariantOptions] = React.useState();\n const [enquiryFormQty, setEnquiryFormQty] = React.useState(1);\n\n const _description = checkAuth === true && product.checkMember === true && (product.wholesaleDescription && product.wholesaleDescription !== '') ? product.wholesaleDescription : product.description;\n\n const [favorite, setFavorite] = React.useState(() => {\n if (localStorage.favorites.includes(product.productId)) {\n return true;\n }\n return false;\n });\n\n //const { dispatch } = useStore();\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 handleClick(e) {\n if (window.innerWidth <= 900) {\n e.preventDefault();\n e.stopPropagation();\n const link = e.target.closest(\"a\").getAttribute(\"href\");\n if (link && link !== \"\" && link.includes(\".pdf\")) {\n const link = e.target.closest(\"a\").getAttribute(\"href\");\n setPdfViewPath(link);\n setPdfViewScale(false);\n document.body.style.overflow = \"hidden\";\n }\n }\n }\n\n function closePdfViewer() {\n setPdfViewPath(null);\n setPdfViewNumPages(null);\n document.body.style.overflow = \"unset\";\n }\n\n function changePdfViewScale() {\n setPdfViewScale(!pdfViewScale);\n }\n\n function onDocumentLoadSuccess({ numPages }) {\n const result = [];\n for (let i = 0; i < numPages; i++) {\n result.push(i);\n // if(i === 19){\n // break;\n // }\n }\n\n // const _pages = Math.floor(numPages / 15);\n // const result = [];\n // for (let i = 0; i <= _pages; i++) {\n // result.push({ pageItem: i, items: [], numPages : numPages });\n // }\n // for (let i = 0; i < numPages; i++) {\n // result[Math.floor(i / 15)].items.push(i);\n // }\n\n setPdfViewNumPages(result);\n }\n\n let settings = {\n dots: false,\n infinite: allPhotos.length > 2 ? true : false,\n speed: 1500,\n autoplaySpeed: 3000,\n //fade: true,\n autoplay: false,\n slidesToShow: allPhotos.length >= 3 ? 3 : allPhotos.length,\n slidesToScroll: 1,\n };\n\n const slides = allPhotos.map((photo, index) => (\n \n setHeroImage(photo)}\n >\n {/* {photo.alt} setHeroImage(photo)} /> */}\n \n ));\n\n function onSubmit(e) {\n enquiryForm.validateForm(e, () => {\n const value = {\n ...enquiryForm.getValue(),\n productName: product.productName,\n emailReceiver: \"\",\n };\n //var files = form.getFiles();\n var formData = new FormData();\n formData.append(\"jsonData\", JSON.stringify(value));\n //post.send(env.apiBase + \"/api/contact/send\", value);\n console.log(\"formData\", formData);\n post.sendFormData(env.apiBase + \"/api/cart/sendenquire\", formData);\n setSendingStatus(\"pending\");\n });\n //console.log('submitting');\n }\n\n // function addToQuoteFunction(type = null) {\n // let variantValue = '';\n\n // for (let i in variantOptions || []) {\n // if (i > 0) {\n // variantValue = variantValue + ', ';\n // }\n // variantValue =\n // variantValue + variantOptions[i].name + ' : ' + variantOptions[i].value;\n // }\n\n // let cookieValue = document.cookie\n // .split('; ')\n // .find((row) => row.startsWith('add_to_quote='))\n // ?.split('=')[1];\n // let _value =\n // cookieValue && cookieValue !== '' ? cookieValue.split('|') : [];\n // let _valueResult = [];\n\n // let checkNewItem = true;\n\n // for (let i in _value) {\n // const _item = _value[i].split('::');\n // const _valueO = {\n // productId: _item[0],\n // productImg: _item[1],\n // productName: _item[2],\n // productVal: _item[3],\n // uniqueId: _item[4],\n // enquiryFormQty: _item[5],\n // };\n\n // _valueResult.push(_valueO);\n\n // if (\n // _valueO.productId === product.productId &&\n // _valueO.productVal === variantValue\n // ) {\n // _valueO.enquiryFormQty =\n // parseInt(_valueO.enquiryFormQty) + parseInt(enquiryFormQty);\n // checkNewItem = false;\n // break;\n // }\n // }\n\n // if (checkNewItem && checkNewItem === true) {\n // _valueResult.push({\n // productId: product.productId,\n // productImg: product.thumbnailUrl,\n // productName: product.productName,\n // productVal: variantValue,\n // uniqueId: product.productId + '_' + Math.random() * 1000,\n // enquiryFormQty: enquiryFormQty,\n // });\n // }\n\n // cookieValue = '';\n\n // for (let i in _valueResult) {\n // if (i > 0) {\n // cookieValue = cookieValue + '|';\n // }\n\n // cookieValue =\n // cookieValue +\n // _valueResult[i].productId +\n // '::' +\n // _valueResult[i].productImg +\n // '::' +\n // _valueResult[i].productName +\n // '::' +\n // _valueResult[i].productVal +\n // '::' +\n // _valueResult[i].uniqueId +\n // '::' +\n // _valueResult[i].enquiryFormQty;\n // }\n\n // document.cookie = `add_to_quote=${cookieValue}; expires=Session; path=/`;\n // dispatch({\n // type: 'SET_STATE',\n // payload: { addToQuote: _valueResult.length },\n // });\n\n // if (type && type === 'get_quote') {\n // openAddEnquiryForm();\n // }\n // }\n\n if (post.done() && sendingStatus === \"pending\") {\n //var value = enquiryForm.getValue();\n //gtm.sendEvent('contactFormSubmitted', {contactEmail: value.email} )\n enquiryForm.reset(enquiryFormModel);\n setSendingStatus(null);\n setTimeout(() => {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }, 1500);\n }\n\n useEffect(() => {\n\n const portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", function (e) {\n if (e.matches) {\n // Portrait mode\n } else {\n // Landscape\n }\n setPdfViewWidth(window.innerWidth);\n });\n\n // eslint-disable-next-line\n }, []);\n\n \n\n return (\n \n \n \n {openPopup && (\n \n
    \n {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }}\n >\n CLOSE\n \n\n
    {/* Enquire */}
    \n
    \n {/*
    \n
    \n \n
    \n
    */}\n
    \n
    \n
    \n {enquiryFormRender(\"name\")}\n
    \n
    \n {enquiryFormRender(\"phone\")}\n
    \n
    \n {enquiryFormRender(\"email\")}\n
    \n
    \n\n
    \n
    \n {enquiryFormRender(\"enquiry\")}\n
    \n
    \n\n
    \n
    \n
    \n {/* onClick={onSubmit} status={post.status} */}\n \n \n {post.status === \"done\" && \"Successfully sent!\"}\n
    \n
    \n
    \n
    \n
    \n \n \n )}\n\n {pdfViewPath && (\n \n )}\n
    \n\n \n \n \n\n
    \n
    \n \n
    \n
    \n \n\n \n \n
    \n\n {product.description && (\n \n )}\n\n {heroImage && heroImage.imageUrl && (\n \n )}\n\n
    \n
    \n\n \n Add to favorites\n {\n setFavorite((pre) => {\n let _localStorageFavorites =\n localStorage.favorites.replace(\n product.productId + \"|\",\n \"\"\n );\n let _new = !pre;\n if (_new === true) {\n _localStorageFavorites =\n _localStorageFavorites + product.productId + \"|\";\n }\n localStorage.setItem(\n \"favorites\",\n _localStorageFavorites\n );\n return _new;\n });\n }}\n >\n
    \n\n
    \n \n openPopupImage(heroImage.imageUrl)}\n />\n
    \n\n {allPhotos && allPhotos.length > 1 && (\n \n {/* {slides} */}\n\n {utils.site.isMobile() ? (\n {slides}\n ) : (\n \n {slides}\n
    \n )}\n
    \n )}\n \n
    \n \n {product.productName}\n \n\n \n {product.shortDesc}\n
    \n\n {\n handleClick(e);\n }}\n >\n\n {/* {\n product.productStatus === 0 ?\n :\n \n // \n } */}\n\n \n\n {product.productStatus === 100 && (\n
    \n {\n setOpenPopup(true);\n document.body.style.overflow = \"hidden\";\n // addToQuoteFunction('get_quote');\n }}\n >\n {\" \"}\n GET QUOTE{\" \"}\n \n {/* {\n addToQuoteFunction();\n }}\n >\n {' '}\n ADD TO QUOTE{' '}\n */}\n
    \n )}\n\n {product.productStatus === 1 && (\n \n )}\n\n {product.productStatus === 98 && (\n \n )}\n \n \n {/* */}\n \n \n\n \n \n
    \n );\n}\n\n// function GetVariations({ variantAttributes }) {\n// console.log(\"variantAttribute\", variantAttributes);\n// const _variantAttributes = variantAttributes || [];\n// return (\n//
    \n// {\n// _variantAttributes.map((item, index) => {\n// return (\n//
    \n//
    \n// {item.name}\n//
    \n//
    \n// {\n// item.options.map((sItem, sIndex) => {\n// return (\n//
    \n// {sItem.value}\n//
    \n// )\n// })\n// }\n//
    \n//
    \n// )\n// })\n// }\n//
    \n// )\n// }\n\nfunction PdfViewItem({\n pdfViewPath,\n pdfViewNumPages,\n pdfViewWidth,\n pdfViewScale,\n onDocumentLoadSuccess,\n closePdfViewer,\n changePdfViewScale,\n}) {\n const abc = (event) => {\n if (event.scale !== 1) {\n event.preventDefault();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"touchmove\", abc, { passive: false });\n return () => {\n document.removeEventListener(\"touchmove\", abc, { passive: false });\n };\n }, []);\n\n return (\n \n
    \n
    \n \n
    \n CLOSE\n
    \n {pdfViewNumPages && (\n \n {\" \"}\n DOWNLOAD{\" \"}\n \n )}\n\n {pdfViewNumPages && (\n \n {\" \"}\n - / +{\" \"}\n
    \n )}\n \n \n {/*
    \n \n
    \n \n {\n pdfViewNumPages &&\n
    \n {\n pdfViewNumPages.map((item, index) => {\n return (\n \n {\n item.items.map((sItem, sIndex) => {\n return (\n \n
    {(sItem + 1) + ' of ' + item.numPages}
    \n
    \n )\n })\n }\n
    \n )\n })\n }\n
    \n } */}\n\n \n \n {pdfViewNumPages &&\n pdfViewNumPages.map((item, index) => {\n return (\n \n \n {index + 1 + \" of \" + pdfViewNumPages.length}\n \n \n );\n })}\n \n \n \n \n
    \n );\n}\n\nfunction getMetaTag(product, mainPhoto) {\n return {\n title: product.productName,\n description: product.metaDesc || product.intro,\n keywords: \"\",\n heroImageUrl: utils.site.resourcePath(mainPhoto.imageUrl),\n language: \"English\",\n country: \"Australia\",\n siteName: env.siteName,\n url: utils.site.resourcePath(\"/product/\" + product.productSlug),\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n };\n}\n\n// function RelatedProducts({ products }) {\n// //console.log(products)\n// if (!products || products.length === 0) return null;\n// return
    \n//

    Why not add a small gift?

    \n//
    \n// {products.map((product, index) =>\n// \n// )}\n//
    \n//
    \n// }\n","/** @jsx jsx */\r\nimport { jsx } from '@emotion/core';\r\nimport style from './productViewStyle';\r\nimport { getEnquiryFormModel } from './enquiryFormModel';\r\nimport { Button, ErrorMessage, usePost } from '../../../components';\r\nimport { useForm } from '../../../form';\r\nimport { useState } from 'react';\r\nimport { useStore } from '../../../store';\r\nimport env from '../../../env';\r\n\r\nexport function EnquiryFormView(props) {\r\n\r\n const enquiryFormModel = getEnquiryFormModel({});\r\n const enquiryForm = useForm(enquiryFormModel, { usePlaceholder: true });\r\n const enquiryFormRender = (name) => enquiryForm.renderControl(name, null);\r\n const post = usePost();\r\n const { dispatch } = useStore();\r\n const [enquiryItems, setEnquiryItems] = useState(() => {\r\n const _result = [];\r\n let cookieValue = document.cookie.split(\"; \").find((row) => row.startsWith(\"add_to_quote=\"))?.split(\"=\")[1];\r\n if (cookieValue && cookieValue !== '') {\r\n const _value = cookieValue.split(\"|\");\r\n _value.forEach(el => {\r\n const _item = el.split(\"::\");\r\n _result.push({\r\n productId: _item[0],\r\n productImg: _item[1],\r\n productName: _item[2],\r\n productVal: _item[3],\r\n uniqueId: _item[4],\r\n enquiryFormQty: _item[5]\r\n });\r\n });\r\n }\r\n\r\n console.log(\"_result\", _result);\r\n\r\n return _result;\r\n });\r\n\r\n const [sendingStatus, setSendingStatus] = useState(null);\r\n\r\n function onSubmit(e) {\r\n enquiryForm.validateForm(e, () => {\r\n const value = { ...enquiryForm.getValue(), enquiryItems: enquiryItems, emailReceiver: '' };\r\n\r\n var formData = new FormData();\r\n formData.append('jsonData', JSON.stringify(value));\r\n post.sendFormData(env.apiBase + \"/api/cart/sendenquire\", formData);\r\n setSendingStatus('pending');\r\n\r\n });\r\n }\r\n\r\n function removeEnquiryItem(uniqueId) {\r\n const _fi = enquiryItems.filter((x) => {\r\n return x.uniqueId !== uniqueId;\r\n });\r\n\r\n dispatch({ type: 'SET_STATE', payload: { addToQuote: _fi.length } });\r\n\r\n let _cookie = \"\";\r\n for (let i in _fi) {\r\n if (i > 0) {\r\n _cookie = _cookie + \"|\";\r\n }\r\n _cookie = _fi[i].productId + \":\" + _fi[i].productImg + \":\" + _fi[i].productName;\r\n }\r\n document.cookie = `add_to_quote=${_cookie}; expires=Session; path=/`;\r\n setEnquiryItems(_fi);\r\n }\r\n\r\n if (post.done() && sendingStatus === 'pending' && !post.hasErrors()) { \r\n\r\n setTimeout(() => {\r\n dispatch({ type: 'SET_STATE', payload: { addToQuote: 0 } });\r\n props.closeAddEnquiryForm();\r\n }, 500);\r\n\r\n document.cookie = `add_to_quote=${''}; expires=Session; path=/`;\r\n document.body.style.overflow = \"unset\";\r\n post.reset();\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    {\r\n props.closeAddEnquiryForm();\r\n }}>\r\n CLOSE\r\n
    \r\n\r\n
    \r\n {/* Enquire */}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n enquiryItems.map((item, index) => {\r\n return (\r\n
    \r\n
    \r\n product img\r\n
    \r\n
    \r\n
    \r\n {item.productName}\r\n
    \r\n\r\n
    \r\n {item.productVal}\r\n
    \r\n
    \r\n Qty : {item.enquiryFormQty}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    {enquiryFormRender('name')}
    \r\n
    {enquiryFormRender('phone')}
    \r\n
    {enquiryFormRender('email')}
    \r\n
    \r\n\r\n
    \r\n
    {enquiryFormRender('enquiry')}
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/* onClick={onSubmit} status={post.status} */}\r\n \r\n \r\n {post.status === 'done' && 'Successfully sent!'}\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}","import { mq } from '../../../cssInJs'\r\n\r\nexport default {\r\n orderDetails: {\r\n textAlign: 'left',\r\n marginBottom: '3rem',\r\n paddingLeft: '1rem',\r\n paddingRight: '1rem',\r\n paddingBottom: '2rem'\r\n },\r\n summary: {\r\n\r\n },\r\n\r\n fn: mq({\r\n minWidth: ['7rem', null, '10em'],\r\n margin: 0\r\n }),\r\n fv: {\r\n\r\n },\r\n\r\n orderItems: {},\r\n orderItem: {\r\n padding: '0.5rem 0',\r\n margin: '0.5rem 0',\r\n borderBottom: 'solid 1px #ccc'\r\n },\r\n total: {\r\n //marginLeft: 15,\r\n fontWeight: 'bold',\r\n color: 'chocolate'\r\n }\r\n}\r\n","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport style from \"./orderDetailsStyle\";\r\nimport React, { Fragment } from \"react\";\r\nimport env from \"../../../env\";\r\nimport { useGet } from \"../../../components\";\r\nimport { Loading, ErrorPopup } from \"../../../components\";\r\nimport { useRouter } from \"../../../components\";\r\nimport utils from \"../../../utils\";\r\nimport { useStore } from \"../../../store\";\r\n\r\nexport function OrderDetails() {\r\n const get = useGet();\r\n const { query } = useRouter();\r\n const o = query.o || \"\";\r\n const { dispatch } = useStore();\r\n\r\n React.useEffect(() => {\r\n env.setDevCartId(null);\r\n get.send(env.apiBase + \"/api/order/getPaidOrder/\" + o);\r\n dispatch({ type: \"SET_STATE\", payload: { cartInfo: 0 } });\r\n\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 const order = get.response;\r\n\r\n return
    ;\r\n}\r\n\r\nfunction Details({ order }) {\r\n const orderItems = order.orderItems.filter((x) => x.orderItemType === 0);\r\n // const taxLines = order.orderItems.filter((x) => x.orderItemType === 1);\r\n\r\n function itemAmount(orderItem) {\r\n return (\r\n (orderItem.unitPrice * 100 +\r\n (orderItem.addedUnitPrice ? orderItem.addedUnitPrice * 100 : 0) -\r\n (orderItem.discountUnitPrice ? orderItem.discountUnitPrice * 100 : 0)) /\r\n 100\r\n );\r\n }\r\n // function itemTotalAmount(orderItem) {\r\n // return (orderItem.quantity * (orderItem.unitPrice * 100 + orderItem.addedUnitPrice * 100 - orderItem.discountUnitPrice * 100)) / 100;\r\n // }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\" \"}\r\n {order.orderNo}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n \r\n AU {utils.money.formatMoney(order.totalAmount)}\r\n {\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n \r\n {utils.date.formatYYYYMMDD(order.orderDate)}\r\n {\" \"}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n

    ITEMS

    \r\n
    \r\n {orderItems.map((orderItem, i) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Unit Price: {utils.money.formatMoney(itemAmount(orderItem))}\r\n
    \r\n
    \r\n
    Qty: {orderItem.quantity}
    \r\n
    \r\n ))}\r\n\r\n
    \r\n
    Shipping Fee:
    \r\n
    \r\n
    \r\n {utils.money.formatMoney(order.shippingAmount)}\r\n
    \r\n
    \r\n
    \r\n\r\n {/* {taxLines.map((orderItem, index) => \r\n
    \r\n
    \r\n Tax: {orderItem.itemName}\r\n
    \r\n
    \r\n
    \r\n {utils.money.formatMoney(orderItem.unitPrice)}\r\n
    \r\n
    \r\n
    \r\n )} */}\r\n\r\n
    \r\n
    GST: GST included in price
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Total: AU {utils.money.formatMoney(order.totalAmount)}\r\n {/* Item Total: {utils.money.formatMoney(order.itemAmount)}\r\n + Shipping Fee: {order.shippingAmount > 0 ? 'AU ' + utils.money.formatMoney(order.shippingAmount) : 'FREE'}\r\n + GST: {utils.money.formatMoney(order.taxAmount)}\r\n \r\n
    Grand Total (including GST): AU {utils.money.formatMoney(order.totalAmount)}\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n {/*

    CONTACT

    */}\r\n

    \r\n DELIVERY METHOD\r\n

    \r\n
    {order.shippingMethod}
    \r\n {order.shippingAddress && order.shippingMethod === \"Standard\" && (\r\n
    \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction Address({ addr }) {\r\n return (\r\n
    \r\n
    \r\n

    \r\n {\" \"}\r\n SHIPPING ADDRESS{\" \"}\r\n

    \r\n
    \r\n {\" \"}\r\n {addr.firstName}{\" \"}\r\n
    \r\n {/*
    \r\n {\" \"}\r\n {addr.surname}{\" \"}\r\n
    */}\r\n
    \r\n \r\n {addr.street1}\r\n \r\n {addr.street2}\r\n \r\n
    \r\n
    \r\n {\" \"}\r\n {addr.suburb}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {addr.state}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {addr.postcode}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {addr.email}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {addr.mobile}{\" \"}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction Billing(props) {\r\n const billingAddr = props.billingAddr;\r\n const useSameAddress = props.useSameAddress;\r\n return (\r\n
    \r\n
    \r\n

    \r\n {\" \"}\r\n BILLING ADDRESS{\" \"}\r\n

    \r\n {useSameAddress === true &&
    Use the same address
    }\r\n {billingAddr && useSameAddress === false && (\r\n \r\n
    \r\n {\" \"}\r\n {billingAddr.firstName}{\" \"}\r\n
    \r\n {/*
    \r\n {\" \"}\r\n {billingAddr.surname}{\" \"}\r\n
    */}\r\n
    \r\n \r\n {billingAddr.street1} \r\n \r\n {\" \"}\r\n {billingAddr.street2}{\" \"}\r\n \r\n
    \r\n
    \r\n {\" \"}\r\n {billingAddr.suburb}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {billingAddr.state}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {billingAddr.postcode}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {billingAddr.email}{\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {billingAddr.mobile}{\" \"}\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n","import { mq, variables } from '../../../cssInJs';\r\n\r\nexport default {\r\n dash_board_banner : mq({\r\n backgroundImage: 'url(\"/sites/anfc/media/misc/native-food-in-jars.jpg\")',\r\n height: ['92px', null, '207px'],\r\n }),\r\n dash_board_menus : {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n },\r\n dash_board_menu : {\r\n //margin: '0.5rem',\r\n padding: '0.5rem',\r\n flex : '1 0 33.3%',\r\n maxWidth: '33.3%',\r\n textAlign: 'center',\r\n fontWeight: 600,\r\n fontSize: '1.2rem',\r\n '&.selected' : {\r\n backgroundColor: '#464934',\r\n color : 'white'\r\n },\r\n '.dash_board_menu_item' : {\r\n cursor: 'pointer'\r\n },\r\n 'svg' : {\r\n marginBottom: '5px'\r\n }\r\n },\r\n\r\n order_list : {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap : 'wrap'\r\n },\r\n order_list_item : {\r\n padding : '0.5rem 0rem',\r\n flex : '1 0 100%',\r\n maxWidth: '100%',\r\n '.order_list_item_container' : {\r\n //cursor: 'pointer',\r\n //backgroundColor: 'white',\r\n //padding : '1rem',\r\n display : 'flex',\r\n //flexDirection: 'column',\r\n flexWrap : 'wrap',\r\n 'div' : {\r\n paddingLeft: '0.5rem',\r\n paddingRight: '0.5rem',\r\n flex : '1 0 33.3%',\r\n maxWidth : '33.3%'\r\n }\r\n },\r\n 'label' : {\r\n marginBottom : '0rem'\r\n },\r\n '.order_list_item_order_no' : {\r\n //cursor: 'pointer',\r\n fontWeight : 700,\r\n transition: 'all .2s ease-in-out', \r\n 'a:hover' : {\r\n //fontWeight : 700\r\n color: variables.colorLightGreen\r\n }\r\n }\r\n },\r\n\r\n h_3 : {\r\n fontFamily: variables.familyBase\r\n }\r\n}","import { fb, validators } from \"../../../lib/form\";\r\n\r\nconst countryList = [{ name: \"Australia\", value: \"Australia\" }];\r\n\r\nconst businessCategories = [\r\n { name: \"Retail Storefront\", value: \"Retail Storefront\" },\r\n { name: \"Retail Online Only\", value: \"Retail Online Only\" },\r\n { name: \"Hospitality\", value: \"Hospitality\" },\r\n { name: \"Gift Store\", value: \"Gift Store\" },\r\n { name: \"Wholesaler\", value: \"Wholesaler\" },\r\n];\r\n\r\nconst estimatedSpendList = [\r\n { name: \"$0-$200 per month\", value: \"$0-$200 per month\" },\r\n { name: \"$201-$500 per month\", value: \"$201-$500 per month\" },\r\n { name: \"$501-$1000 per month\", value: \"$501-$1000 per month\" },\r\n { name: \"$1000+ per month\", value: \"$1000+ per month\" },\r\n];\r\n\r\nexport function getWholesaleRegisterModel(data) {\r\n\r\n const model = fb.group({\r\n billingAddress: address(data.billingAddress, data.checkReadOnly),\r\n shippingAddress: addressS(data.shippingAddress, data.checkReadOnly),\r\n\r\n firstName: [\r\n data.firstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Authorised Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n attrs: { readOnly: data.checkReadOnly ? data.checkReadOnly : false },\r\n },\r\n ],\r\n lastName: [\r\n data.lastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Last Name\",\r\n type: \"text\",\r\n style: { className: \"last_name\" },\r\n forceUsePlaceholder: \"Last Name\",\r\n attrs: { readOnly: data.checkReadOnly ? data.checkReadOnly : false },\r\n },\r\n ],\r\n email: [\r\n data.email || \"\",\r\n data.hideTermsAndConditions && data.hideTermsAndConditions === true\r\n ? []\r\n : [validators.Required()],\r\n {\r\n label: \"Email\",\r\n type: \"email\",\r\n forceUsePlaceholder: \"Enter Email\",\r\n attrs: { readOnly: data.checkReadOnly ? data.checkReadOnly : false },\r\n },\r\n ],\r\n password: [\r\n data.email || \"\",\r\n data.hideTermsAndConditions && data.hideTermsAndConditions === true\r\n ? []\r\n : [validators.Required()],\r\n { label: \"Password\", type: \"password\", forceUsePlaceholder: \"Password\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n businessPhone: [\r\n data.businessPhone || \"\",\r\n [validators.Required()],\r\n { label: \"Business Phone:\", type: \"text\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n\r\n mobilePhone: [\r\n data.mobilePhone || \"\",\r\n [validators.Required()],\r\n { label: \"Mobile Phone:\", type: \"text\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n\r\n businessName: [\r\n data.businessName || \"\",\r\n [validators.Required()],\r\n { label: \"Business Name:\", type: \"text\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n\r\n abn: [\r\n data.abn || \"\",\r\n [validators.Required()],\r\n { label: \"ABN:\", type: \"text\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n\r\n acn: [\r\n data.acn || \"\",\r\n [],\r\n { label: \"ACN:\", type: \"text\", attrs : {readOnly : data.checkReadOnly ? data.checkReadOnly : false } },\r\n ],\r\n\r\n useSameAddress: [\r\n data.useSameAddress || true,\r\n [],\r\n { label: `Same as Business Address`, type: \"checkbox\", attrs : {disabled : data.checkReadOnly ? data.checkReadOnly : false } }\r\n ],\r\n\r\n businessCategory: [\r\n data.businessCategory || \"Retail Storefront\",\r\n [validators.Required()],\r\n {\r\n label: \"Business Category:\",\r\n type: \"select\",\r\n options: businessCategories,\r\n style: { inline: true },\r\n attrs : {disabled : data.checkReadOnly ? data.checkReadOnly : false }\r\n },\r\n ],\r\n estimatedSpend: [\r\n data.estimatedSpend || \"Retail Storefront\",\r\n [validators.Required()],\r\n {\r\n label: \"Estimated Spend:\",\r\n type: \"select\",\r\n options: estimatedSpendList,\r\n style: { inline: true },\r\n attrs : {disabled : data.checkReadOnly ? data.checkReadOnly : false }\r\n },\r\n ],\r\n checkConditions: [\r\n data.checkConditions || false,\r\n data.hideTermsAndConditions && data.hideTermsAndConditions === true\r\n ? []\r\n : [validators.Required()],\r\n {\r\n label: `I agree to the website terms and conditions.`,\r\n type: \"checkbox\",\r\n },\r\n ],\r\n checkToUpdateForm: [\r\n data.checkToUpdateForm || true,\r\n [],\r\n {\r\n label: `Check to update form`,\r\n type: \"checkbox\",\r\n },\r\n ],\r\n });\r\n return model;\r\n}\r\n\r\nexport function address(model, checkReadOnly) {\r\n const data = model || {};\r\n return fb.group({\r\n addressFirstName: [\r\n data.addressFirstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Billing Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n addressLastName: [\r\n data.addressLastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Billing Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Last Name\",\r\n style: { className: \"last_name\" },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n addressEmail: [\r\n data.addressEmail || \"\",\r\n [validators.Required(), validators.Email()],\r\n {\r\n label: \"Billing Email:\",\r\n type: \"email\",\r\n forceUsePlaceholder: \"Enter Email\",\r\n style: { className: \"last_name\" },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n address: [\r\n data.address || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Business Address:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Street Address\",\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n city: [\r\n data.city || \"\",\r\n [validators.Required()],\r\n { label: \"City\", type: \"text\", attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n state: [\r\n data.state || \"\",\r\n [validators.Required()],\r\n { label: \"State / Province / Region\", type: \"text\",\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n postalCode: [\r\n data.postalCode || \"\",\r\n [validators.Required()],\r\n { label: \"ZIP / Postal Code\", type: \"text\", attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n country: [\r\n data.country || \"Australia\",\r\n [validators.Required()],\r\n {\r\n label: \"Country\",\r\n type: \"select\",\r\n options: countryList,\r\n style: { inline: true },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n });\r\n}\r\n\r\nexport function addressS(model, checkReadOnly) {\r\n const data = model || {};\r\n return fb.group({\r\n addressFirstName: [\r\n data.addressFirstName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"First Name\",\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n addressLastName: [\r\n data.addressLastName || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Contact:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Last Name\",\r\n style: { className: \"last_name\" },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n addressEmail: [\r\n data.addressEmail || \"\",\r\n [validators.Required(), validators.Email()],\r\n {\r\n label: \"Shipping Email:\",\r\n type: \"email\",\r\n forceUsePlaceholder: \"Enter Email\",\r\n style: { className: \"last_name\" },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n\r\n address: [\r\n data.address || \"\",\r\n [validators.Required()],\r\n {\r\n label: \"Shipping Address:\",\r\n type: \"text\",\r\n forceUsePlaceholder: \"Street Address\",\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n city: [\r\n data.city || \"\",\r\n [validators.Required()],\r\n { label: \"City\", type: \"text\", attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n state: [\r\n data.state || \"\",\r\n [validators.Required()],\r\n { label: \"State / Province / Region\", type: \"text\", attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n postalCode: [\r\n data.postalCode || \"\",\r\n [validators.Required()],\r\n { label: \"ZIP / Postal Code\", type: \"text\", attrs : {readOnly : checkReadOnly ? checkReadOnly : false } }\r\n ],\r\n country: [\r\n data.country || \"Australia\",\r\n [validators.Required()],\r\n {\r\n label: \"Country\",\r\n type: \"select\",\r\n options: countryList,\r\n style: { inline: true },\r\n attrs : {readOnly : checkReadOnly ? checkReadOnly : false }\r\n },\r\n ],\r\n });\r\n}\r\n","import { mq, variables } from \"../../../cssInJs\"\r\n\r\nexport default {\r\n wholesale_register_form : {\r\n 'label' : mq({\r\n fontSize: ['1rem',null,'0.9rem']\r\n }),\r\n 'button' : {\r\n backgroundColor: '#8d2b01',\r\n borderColor: '#8d2b01',\r\n '&:hover' : {\r\n backgroundColor: '#5a1b00',\r\n borderColor: '#5a1b00',\r\n }\r\n }\r\n },\r\n h_3 : {\r\n fontFamily: variables.familyBase\r\n }\r\n}","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { getWholesaleRegisterModel } from \"./wholesaleRegisterModel\";\r\nimport { useForm } from \"../../../form\";\r\nimport style from \"./wholesaleRegisterStyle\";\r\nimport { Button, ErrorMessage } from \"../../../components\";\r\n\r\nexport function WholesaleRegisterView({ functionFrom, formData }) {\r\n const model = getWholesaleRegisterModel({ ...formData });\r\n const form = useForm(model, {\r\n usePlaceholder: false,\r\n onControlChanged: orderItemChanged,\r\n });\r\n //const post = usePost();\r\n const render = (name) => form.renderControl(name, null);\r\n const [sendingStatus, setSendingStatus] = useState(null);\r\n const [error, setError] = useState(\"\");\r\n const val = form.getValue();\r\n const billingInfo = form.model.find(\"billingAddress\");\r\n const shippingInfo = form.model.find(\"shippingAddress\");\r\n const checkToUpdateForm = form.model.find(\"checkToUpdateForm\").value;\r\n \r\n if (shippingInfo) {\r\n shippingInfo.disableValidators = val.useSameAddress;\r\n }\r\n billingInfo.disableValidators = false;\r\n\r\n function orderItemChanged(e, control) {\r\n if (control && control.name === \"checkToUpdateForm\") {\r\n const value = control.value;\r\n const model = getWholesaleRegisterModel({\r\n ...form.getValue(),\r\n checkReadOnly: !value,\r\n hideTermsAndConditions : (formData && formData.hideTermsAndConditions) ? formData.hideTermsAndConditions : false\r\n });\r\n form.reset(model);\r\n }\r\n }\r\n\r\n function onSubmit(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // functionFrom({test : \"abcccc\"}).then(() => {\r\n // console.log(\"555555555555555\");\r\n // });\r\n\r\n form.validateForm(e, () => {\r\n setSendingStatus(\"pending\");\r\n const value = { ...form.getValue() };\r\n functionFrom(value).then((res) => {\r\n \r\n if(res && res.errors && res.errors.length > 0){\r\n setError(res.errors[0].errorMessage);\r\n } \r\n setSendingStatus(null);\r\n });\r\n });\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    {render(\"firstName\")}
    \r\n
    {render(\"lastName\")}
    \r\n {formData.hideTermsAndConditions &&\r\n formData.hideTermsAndConditions === true ? null : (\r\n
    {render(\"email\")}
    \r\n )} \r\n {formData.hideTermsAndConditions &&\r\n formData.hideTermsAndConditions === true ? null : (\r\n
    {render(\"password\")}
    \r\n )}\r\n
    \r\n\r\n
    \r\n
    {render(\"businessPhone\")}
    \r\n
    {render(\"mobilePhone\")}
    \r\n
    \r\n\r\n

    Business Details

    \r\n
    \r\n\r\n
    \r\n
    {render(\"businessName\")}
    \r\n
    {render(\"abn\")}
    \r\n
    {render(\"acn\")}
    \r\n
    \r\n\r\n
    \r\n\r\n

    Shipping/Postal Address:

    \r\n
    \r\n
    {render(\"useSameAddress\")}
    \r\n
    \r\n\r\n {!val.useSameAddress && (\r\n
    \r\n )}\r\n\r\n
    \r\n
    {render(\"businessCategory\")}
    \r\n
    {render(\"estimatedSpend\")}
    \r\n
    \r\n\r\n {formData.hideTermsAndConditions &&\r\n formData.hideTermsAndConditions === true ? null : (\r\n \r\n

    Terms and conditions

    \r\n
    \r\n
    {render(\"checkConditions\")}
    \r\n
    \r\n
    \r\n )}\r\n\r\n {/*
    \r\n
    {render(\"checkToUpdateForm\")}
    \r\n
    */}\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n {checkToUpdateForm === true && (\r\n \r\n )}\r\n\r\n \r\n \r\n {/* {post.done() && (\r\n \r\n Successfully sent!\r\n \r\n )} */}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nfunction Address({ form, addressModel }) {\r\n const render = (name) => form.renderControl(name, addressModel);\r\n return (\r\n \r\n
    \r\n
    {render(\"addressFirstName\")}
    \r\n
    {render(\"addressLastName\")}
    \r\n
    {render(\"addressEmail\")}
    \r\n
    \r\n\r\n
    \r\n
    {render(\"address\")}
    \r\n
    \r\n\r\n
    \r\n
    {render(\"city\")}
    \r\n
    {render(\"state\")}
    \r\n
    {render(\"postalCode\")}
    \r\n
    {render(\"country\")}
    \r\n
    \r\n
    \r\n );\r\n}\r\n","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport { useRouter, Loading, SiteLink } from \"../../../components\";\r\nimport { useState, useEffect, Fragment } from \"react\";\r\nimport { useAuth } from \"auth\";\r\nimport env from \"../../../env\";\r\nimport style from \"./style\";\r\nimport { ViewPartial } from \"../../../cms/pages/partials/viewPartial\";\r\nimport { FaClipboardList, FaUserCheck, FaSignOutAlt } from \"react-icons/fa\";\r\nimport { useStore } from \"../../../store\";\r\nimport { WholesaleRegisterView } from \"../register/view\";\r\nimport { getIdToken } from \"lib/auth/services/authHelper\";\r\nimport utils from \"../../../utils\";\r\n\r\nexport function WholeSaleDashBoardView(props) {\r\n const router = useRouter();\r\n const [loading, setLoading] = useState(true);\r\n const auth = useAuth();\r\n const { dispatch } = useStore();\r\n const [current, setCurrent] = useState(1);\r\n const [data, setData] = useState();\r\n //const [user, setUser] = useState();\r\n\r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n const fetchData = async () => {\r\n //console.log(\"await auth.loggedIn()\", await auth.loggedIn());\r\n const _user = await auth.loggedIn();\r\n \r\n if (!_user) {\r\n router.push(\"/member-login\");\r\n return;\r\n }\r\n\r\n const token = await getIdToken();\r\n const res = await fetch(\r\n env.apiBase + \"/api/wholesale/getwholesaleuserinfo\",\r\n {\r\n headers: { Authorization: `Bearer ${token}` },\r\n signal: signal,\r\n }\r\n );\r\n const data = await res.json();\r\n if(data && data.statusCode && data.statusCode === 500){\r\n auth.signout().then((user) => {\r\n dispatch({ type: \"SET_STATE\", payload: { authCheck: false }});\r\n dispatch({ type: 'SET_STATE', payload: { cartInfo:0 }});\r\n dispatch({ type: 'SET_STATE', payload: { userFirstName : \"\" }});\r\n router.push(\"/member-login\");\r\n }) \r\n return;\r\n }\r\n\r\n setData(data);\r\n setLoading(false);\r\n };\r\n\r\n fetchData();\r\n\r\n return function cleanup() {\r\n abortController.abort();\r\n };\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n function logOut(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n auth\r\n .signout()\r\n .then((user) => {\r\n dispatch({ type: \"SET_STATE\", payload: { authCheck: false }});\r\n dispatch({ type: 'SET_STATE', payload: { cartInfo:0 }});\r\n dispatch({ type: 'SET_STATE', payload: { userFirstName : \"\" }});\r\n router.push(\"/\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n setCurrent(1);\r\n }}\r\n >\r\n Orders\r\n
    \r\n
    \r\n \r\n {\r\n setCurrent(2);\r\n }}\r\n >\r\n Account details\r\n
    \r\n \r\n
    \r\n logOut(e)}\r\n >\r\n Log out\r\n
    \r\n \r\n \r\n\r\n {current === 1 && }\r\n {current === 2 && }\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nfunction LoadingView() {\r\n return ;\r\n}\r\n\r\nfunction AccountDetailsView({ data }) {\r\n async function functionFrom(values) {\r\n const sendValues = {\r\n //uid: user.uid,\r\n firstName: values.firstName,\r\n lastName: values.lastName,\r\n businessPhone: values.businessPhone,\r\n mobilePhone: values.mobilePhone,\r\n businessName: values.businessName,\r\n\r\n abn: values.abn,\r\n acn: values.acn,\r\n\r\n businessCategory: values.businessCategory,\r\n estimatedSpend: values.estimatedSpend,\r\n\r\n billingInfo: values.billingInfo,\r\n shippingInfo: values.shippingInfo,\r\n useSameAddress: values.useSameAddress,\r\n };\r\n\r\n const token = await getIdToken();\r\n const res = await fetch(\r\n env.apiBase + \"/api/wholesale/updateuseraccountdetails\",\r\n {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${token}`,\r\n },\r\n body: JSON.stringify(sendValues),\r\n }\r\n );\r\n const _data = await res.json();\r\n if (\r\n _data &&\r\n _data.results &&\r\n _data.results.result &&\r\n _data.results.result === \"successful\"\r\n ) {\r\n window.location.reload();\r\n }\r\n return _data;\r\n }\r\n const formData = {\r\n ...data.wholeSaleRegister,\r\n billingAddress: { ...data.wholeSalAdrBilling },\r\n shippingAddress: { ...data.wholeSalAdrSelling },\r\n hideTermsAndConditions: true,\r\n checkReadOnly: false,\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nfunction OrderListView({ data }) {\r\n const orders = data.orders;\r\n // const orders = [\r\n // {\r\n // orderNo: \"Test-V8720001\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720002\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720003\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720004\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720005\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720006\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720007\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720008\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V8720009\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V87200010\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V87200011\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V87200012\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // {\r\n // orderNo: \"Test-V87200013\",\r\n // totalAmount: 28.9,\r\n // orderDate: \"2023-11-27T11:08:27.022948+00:00\",\r\n // },\r\n // ];\r\n\r\n const [orderData, setOrderData] = useState();\r\n\r\n function addData() {\r\n const sliced = orders.slice(orderData.length, orderData.length + 10);\r\n sliced.forEach((el) => {\r\n orderData.push(el);\r\n });\r\n setOrderData([...orderData]);\r\n }\r\n\r\n useEffect(() => {\r\n if (orders.length > 0) {\r\n setOrderData(orders.slice(0, 10));\r\n } else {\r\n setOrderData([]);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n
    \r\n {orderData && orderData.length === 0 && (\r\n

    \r\n {\" \"}\r\n No orders\r\n

    \r\n )}\r\n\r\n
    \r\n {orderData &&\r\n orderData.map((item, index) => (\r\n \r\n ))}\r\n
    \r\n {orderData && orders.length !== orderData.length && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nfunction OrderListItem({ item }) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n Order Number: {item.orderNo}\r\n \r\n
    \r\n
    \r\n Total Amount: \r\n \r\n AU {utils.money.formatMoney(item.totalAmount)}\r\n \r\n
    \r\n
    \r\n Order Date: \r\n {utils.date.formatYYYYMMDD(item.orderDate)}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import { mq, variables } from \"../../../cssInJs\";\r\n\r\nexport default {\r\n order_detail_wholesale_user_banner: mq({\r\n backgroundImage:\r\n 'url(\"/sites/anfc/media/misc/native-food-in-jars.jpg\")',\r\n height: [\"92px\", null, \"207px\"],\r\n }),\r\n\r\n order_detail_wholesale_user_info: {\r\n backgroundColor: \"white\",\r\n paddingTop: \"0.5rem\",\r\n paddingBottom: \"0.5rem\",\r\n paddingLeft: '0.5rem',\r\n paddingRight: '0.5rem',\r\n \".row\": {\r\n marginLeft: \"0px\",\r\n marginRight: \"0px\",\r\n },\r\n label: {\r\n marginBottom: \"0rem\",\r\n },\r\n },\r\n\r\n go_button : {\r\n transition: 'all 0.2s ease-out',\r\n 'a:hover' : {\r\n color: variables.colorLightGreen\r\n }\r\n }\r\n \r\n};","/** @jsx jsx */\r\nimport { jsx } from \"@emotion/core\";\r\nimport { useState, useEffect, Fragment } from \"react\";\r\nimport {\r\n useRouter,\r\n Loading,\r\n ErrorMessage,\r\n SiteLink,\r\n} from \"../../../components\";\r\nimport { useAuth } from \"auth\";\r\nimport { getIdToken } from \"lib/auth/services/authHelper\";\r\nimport env from \"../../../env\";\r\nimport style from \"./style\";\r\nimport { ViewPartial } from \"../../../cms/pages/partials/viewPartial\";\r\nimport utils from \"../../../utils\";\r\n\r\nexport function WholeSaleDashBoardOrderView(props) {\r\n //const { query } = useRouter();\r\n const router = useRouter();\r\n const o = router.query.o || \"\";\r\n const auth = useAuth();\r\n const [order, setOrder] = useState();\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(\"\");\r\n \r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n const fetchData = async () => {\r\n const _user = await auth.loggedIn();\r\n\r\n if (!_user) {\r\n router.push(\"/member-login\");\r\n return;\r\n }\r\n\r\n const token = await getIdToken();\r\n const res = await fetch(\r\n env.apiBase + \"/api/order/getpaidorderforwholesaleuser/\" + o,\r\n {\r\n headers: { Authorization: `Bearer ${token}` },\r\n signal: signal,\r\n }\r\n );\r\n const data = await res.json();\r\n\r\n if (data && data.statusCode && data.statusCode === 500) {\r\n setError(data.message);\r\n }\r\n setOrder(data);\r\n setLoading(false);\r\n };\r\n fetchData();\r\n return function cleanup() {\r\n abortController.abort();\r\n };\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n return ;\r\n}\r\n\r\nfunction OrderViewItem({ order, error }) {\r\n const orderItems = order.orderItems.filter((x) => x.orderItemType === 0);\r\n const taxLines = order.orderItems.filter((x) => x.orderItemType === 1);\r\n\r\n function itemAmount(orderItem) {\r\n return (\r\n (orderItem.unitPrice * 100 +\r\n (orderItem.addedUnitPrice ? orderItem.addedUnitPrice * 100 : 0) -\r\n (orderItem.discountUnitPrice ? orderItem.discountUnitPrice * 100 : 0)) /\r\n 100\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Go Wholesale Dashboard\r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n {order.orderNo}\r\n
    \r\n
    \r\n {\" \"}\r\n \r\n AU {utils.money.formatMoney(order.totalAmount)}\r\n {\" \"}\r\n
    \r\n
    \r\n {\" \"}\r\n {utils.date.formatYYYYMMDD(order.orderDate)}{\" \"}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n ITEMS\r\n \r\n
    \r\n {orderItems.map((orderItem, i) => (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Unit Price:{\" \"}\r\n {utils.money.formatMoney(itemAmount(orderItem))}\r\n
    \r\n
    \r\n
    Qty: {orderItem.quantity}
    \r\n
    \r\n ))}\r\n\r\n
    \r\n
    Shipping Fee:
    \r\n
    \r\n
    \r\n {utils.money.formatMoney(order.shippingAmount)}\r\n
    \r\n
    \r\n
    \r\n\r\n {/* {taxLines.map((orderItem, index) => (\r\n
    \r\n
    Tax: {orderItem.itemName}
    \r\n
    \r\n
    \r\n {utils.money.formatMoney(orderItem.unitPrice)}\r\n
    \r\n
    \r\n
    \r\n ))} */}\r\n\r\n
    \r\n
    GST: GST included in price
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n Total: AU {utils.money.formatMoney(order.totalAmount)}\r\n
    \r\n
    \r\n \r\n \r\n\r\n \r\n\r\n \r\n DELIVERY METHOD\r\n \r\n
    {order.shippingMethod}
    \r\n {order.shippingAddress && order.shippingMethod === \"Standard\" && (\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\nfunction Address({ addr }) {\r\n return (\r\n
    \r\n \r\n \r\n {\" \"}\r\n SHIPPING ADDRESS{\" \"}\r\n \r\n
    \r\n {addr.firstName}{\" \"}\r\n
    \r\n {/*
    \r\n {addr.surname}{\" \"}\r\n
    */}\r\n
    \r\n \r\n {addr.street1}\r\n {addr.street2}\r\n
    \r\n
    \r\n {addr.suburb}{\" \"}\r\n
    \r\n
    \r\n {addr.state}{\" \"}\r\n
    \r\n
    \r\n {addr.postcode}{\" \"}\r\n
    \r\n
    \r\n {addr.email}{\" \"}\r\n
    \r\n
    \r\n {addr.mobile}{\" \"}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction Billing(props) {\r\n const billingAddr = props.billingAddr;\r\n const useSameAddress = props.useSameAddress;\r\n return (\r\n
    \r\n \r\n

    \r\n {\" \"}\r\n BILLING ADDRESS{\" \"}\r\n

    \r\n {useSameAddress === true &&
    Use the same address
    }\r\n {billingAddr && useSameAddress === false && (\r\n \r\n
    \r\n {billingAddr.firstName}{\" \"}\r\n
    \r\n {/*
    \r\n {billingAddr.surname}{\" \"}\r\n
    */}\r\n
    \r\n \r\n {billingAddr.street1} \r\n \r\n {\" \"}\r\n {billingAddr.street2}{\" \"}\r\n \r\n
    \r\n
    \r\n {billingAddr.suburb}{\" \"}\r\n
    \r\n
    \r\n {billingAddr.state}{\" \"}\r\n
    \r\n
    \r\n {billingAddr.postcode}{\" \"}\r\n
    \r\n
    \r\n {billingAddr.email}{\" \"}\r\n
    \r\n
    \r\n {billingAddr.mobile}{\" \"}\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n","import React from \"react\";\nimport env from \"env\";\nimport { usePost } from \"components\";\nimport { Button, ErrorMessage } from \"components\";\nimport { SiteLink } from \"components\";\n// import { IoReturnUpBack } from 'react-icons/io5';\n\nexport function ForgotPassword() {\n const [username, setUsername] = React.useState(\"\");\n const post = usePost();\n function onSubmit(e) {\n post.send(env.apiBase + \"/api/profile/sendpasswordresetemail\", {\n email: username,\n });\n }\n return (\n
    \n
    \n \n

    Forgot Password

    \n
    \n
    \n
    \n
    \n \n {\n setUsername(event.target.value);\n }}\n />\n
    Email is invalid
    \n
    \n\n
    \n By clicking \"Reset Password\" we will send a password reset link\n
    \n
    \n
    \n \n {post.done() && (\n
    \n Nearly there! Password reset email sent, check your\n inbox including your junk folders.\n
    \n )}\n
    \n
    \n \n \n
    \n
    \n
    \n Go back to{\" \"}\n \n LOG IN\n \n
    \n
    \n \n );\n}","import React from \"react\";\nimport env from \"env\";\nimport { usePost } from \"components\";\nimport { SiteLink } from \"components\";\nimport { useRouter } from \"components\";\nimport { ErrorPopup } from \"components\";\nimport { Button, ErrorMessage } from \"components\";\n//import { IoReturnUpBack } from \"react-icons/io5\";\n\nexport function ResetPassword() {\n const [password, setPassword] = React.useState(\"\");\n const { query } = useRouter();\n const token = (query && query.u) || \"\";\n const post = usePost();\n\n if (!token) {\n return (\n \n Go back to{\" \"}\n \n LOG IN\n \n \n );\n }\n\n function onSubmit(e) {\n post.send(env.apiBase + \"/api/profile/resetpassword\", {\n token: token,\n password: password,\n });\n }\n return (\n \n
    \n \n

    Reset Password

    \n
    \n
    \n
    \n
    \n \n {\n setPassword(event.target.value);\n }}\n />\n
    Password is invalid
    \n
    \n
    \n
    \n \n {post.done() && (\n
    \n Successfully reset your password.\n
    \n )}\n
    \n
    \n \n \n
    \n
    \n\n
    \n Go back to{\" \"}\n \n LOG IN\n \n
    \n \n \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect,\r\n} from \"react-router-dom\";\r\nimport { useRouter } from \"./components\";\r\nimport { StoreProvider } from \"./store\";\r\nimport { ViewPage } from \"./cms/pages/viewPage/viewPage\";\r\nimport { EditPage } from \"./cms/pages/editPage/editPage\";\r\nimport { TopHeader } from \"./layout/topHeader/topHeader\";\r\n// import { Footer } from './layout/footer/footer';\r\nimport { BottomDock } from \"./layout/bottomDock/bottomDock\";\r\n// import { BlogView } from './site/blog/blogView';\r\nimport { AppVersionPage } from \"./components\";\r\nimport { MediaQueryStatus } from \"./components\";\r\nimport { CommonVideoPopup } from \"./layout/popup/commonVideoPopup\";\r\nimport { HelmetProvider } from \"react-helmet-async\";\r\n//import { useScrollPosition } from '@n8tb1t/use-scroll-position';\r\nimport { AppRouteChanged } from \"./AppRouteChanged\";\r\nimport AOS from \"aos\";\r\nimport { ProvideAuth, useAuth } from \"auth\";\r\n\r\n//For ECM\r\nimport { ProductView } from \"./site/ecm/product/productView\";\r\nimport { EnquiryFormView } from \"./site/ecm/product/enquiryFormView\";\r\nimport { OrderDetails } from \"./site/ecm/orderDetails/orderDetails\";\r\nimport { useStore } from \"./store\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { WholeSaleDashBoardView } from \"./site/wholeSale/dashboard/view\";\r\nimport { WholeSaleDashBoardOrderView } from \"./site/wholeSale/orderView/view\";\r\nimport { ForgotPassword } from \"./auth/controls/forgotPassword/forgotPassword\";\r\nimport { ResetPassword } from \"./auth/controls/resetPassword/resetPassword\";\r\nimport env from \"env\";\r\nimport { getIdToken } from \"lib/auth/services/authHelper\";\r\n\r\nfunction Portal({ children }) {\r\n const [el] = useState(document.createElement(\"div\"));\r\n useEffect(() => {\r\n let mount = document.getElementById(\"portal-root\");\r\n mount.appendChild(el);\r\n return () => mount.removeChild(el);\r\n }, [el]);\r\n return createPortal(children, el);\r\n}\r\n\r\nfunction AppLayout(props) {\r\n const { pathname } = useRouter();\r\n const auth = useAuth();\r\n\r\n //For ECM\r\n const storeContext = useRef(useStore());\r\n const [openPopup, setOpenPopup] = useState(false);\r\n\r\n //const [scrolled, setScrolled] = useState(false)\r\n //const path = usePath();\r\n //const routeResult = useRoutes(routes);\r\n\r\n // const parallax = useParallax();\r\n // //console.log(path, routeResult);\r\n // const routeChanged = (path) => {\r\n // //console.log(path);\r\n // parallax.reset();\r\n // }\r\n\r\n // useScrollPosition(({ prevPos, currPos }) => {\r\n // //console.log(currPos.x)\r\n // //console.log(currPos.y);\r\n // if (currPos.y > 90) {\r\n // document.querySelector('body').classList.add('scrolled')\r\n // } else {\r\n // document.querySelector('body').classList.remove('scrolled')\r\n // }\r\n // //setScrolled(currPos.y > 90)\r\n // }, [], null, true)\r\n\r\n //const pageChanged = useCallback(path => routeChanged(path), [])\r\n //useLocationChange((path) => { routeChanged(path, history)})\r\n //useLocationChange(path => routeChanged(path))\r\n\r\n //const pathFiltered = (pathname || '').toLocaleLowerCase();\r\n let specialClassName = \"\";\r\n // if (pathFiltered.indexOf('/digital-sensor') >= 0) specialClassName = 'digital-sensor-page';\r\n // else if (pathFiltered === '/brilliance') specialClassName = 'brilliance-page';\r\n\r\n function openAddEnquiryForm() {\r\n setOpenPopup(true);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n\r\n function closeAddEnquiryForm() {\r\n setOpenPopup(false);\r\n document.body.style.overflow = \"unset\";\r\n }\r\n \r\n useEffect(() => {\r\n //console.log(\"----stg----\");\r\n\r\n if (!localStorage.favorites) {\r\n localStorage.setItem(\"favorites\", \"\");\r\n }\r\n\r\n AOS.init({\r\n duration: 1200,\r\n //delay:400,\r\n //once:true\r\n });\r\n\r\n // For ECM\r\n // fetch(env.apiBase + \"/api/cart/getcart/\" + env.getDevCartId())\r\n // .then((res) => res.json())\r\n // .then((res) => {\r\n // const data = res;\r\n // if (data) {\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: {\r\n // cartInfo:\r\n // data.cartInfo.totalQuantity === 0\r\n // ? 0\r\n // : data.cartInfo.totalQuantity - 1,\r\n // },\r\n // });\r\n // }\r\n // })\r\n // .catch((error) => {\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: { cartInfo: 0 },\r\n // });\r\n // });\r\n\r\n // let cookieValue = document.cookie\r\n // .split(\"; \")\r\n // .find((row) => row.startsWith(\"add_to_quote=\"))\r\n // ?.split(\"=\")[1];\r\n // if (cookieValue && cookieValue !== \"\") {\r\n // const _value = cookieValue.split(\"|\");\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: { addToQuote: _value.length },\r\n // });\r\n // }\r\n const abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n const fetchData = async () => {\r\n let checkAuth = false;\r\n\r\n if (await auth.loggedIn()) {\r\n checkAuth = true;\r\n }\r\n\r\n // if (checkAuth) {\r\n // const token = await getIdToken();\r\n\r\n // const res = await fetch(env.apiBase + \"/api/profile/getuserprofilev3\", {\r\n // headers: { Authorization: `Bearer ${token}` },\r\n // signal: signal,\r\n // });\r\n // const data = await res.json();\r\n // if (\r\n // data &&\r\n // data.results &&\r\n // data.results.user &&\r\n // data.results.user.firstName\r\n // ) {\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: { userFirstName: data.results.user.firstName },\r\n // });\r\n // } else {\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: { userFirstName: \"\" },\r\n // });\r\n // }\r\n // } else {\r\n // storeContext.current.dispatch({\r\n // type: \"SET_STATE\",\r\n // payload: { userFirstName: \"\" },\r\n // });\r\n // }\r\n\r\n const token = await getIdToken();\r\n const res = await fetch(env.apiBase + \"/api/cart/getcart\", {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n signal: signal,\r\n method: \"post\",\r\n body: JSON.stringify({ cartId: env.getDevCartId(), auth: checkAuth })\r\n \r\n });\r\n\r\n const data = await res.json();\r\n \r\n if (data && data.cartInfo) {\r\n storeContext.current.dispatch({\r\n type: \"SET_STATE\",\r\n payload: {\r\n cartInfo:\r\n data.cartInfo.totalQuantity === 0\r\n ? 0\r\n : data.cartInfo.totalQuantity - 1,\r\n },\r\n });\r\n }\r\n\r\n if (data && data.wholeSaleRegister) {\r\n storeContext.current.dispatch({\r\n type: \"SET_STATE\",\r\n payload: { userFirstName: data.wholeSaleRegister.businessName },\r\n });\r\n } else {\r\n storeContext.current.dispatch({\r\n type: \"SET_STATE\",\r\n payload: { userFirstName: \"\" },\r\n });\r\n }\r\n\r\n storeContext.current.dispatch({\r\n type: \"SET_STATE\",\r\n payload: { authCheck: checkAuth },\r\n });\r\n\r\n };\r\n\r\n fetchData();\r\n return function cleanup() {\r\n abortController.abort();\r\n };\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n } />\r\n } />\r\n {/* } /> */}\r\n\r\n \r\n \r\n \r\n\r\n } />\r\n\r\n } ///member/\r\n />\r\n\r\n }\r\n />\r\n\r\n }\r\n />\r\n\r\n }\r\n />\r\n\r\n } />\r\n\r\n \r\n \r\n \r\n \r\n
    \r\n {/* */}\r\n
    \r\n {/*
    */}\r\n \r\n \r\n \r\n\r\n \r\n {openPopup && (\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction App() {\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\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nlet serviceUpdateCheckerInterval = null;\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl, {updateViaCache: 'none'})\r\n .then(async registration => {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration\r\n console.log('Service Worker registration successful with scope: ', registration.scope);\r\n if (registration && registration.waiting) {\r\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n }\r\n \r\n // Regular checking service worker\r\n if (serviceUpdateCheckerInterval) { try { clearInterval(serviceUpdateCheckerInterval) } catch (e) { } }\r\n serviceUpdateCheckerInterval = setInterval(() => {\r\n console.log('Checking SW updates...')\r\n registration.update();\r\n }, 1/*hour(s)*/ * 10/*minutes*/ * 60 * 1000);\r\n\r\n window.updateSW = function() {\r\n console.log('Checking SW updates... (force)')\r\n return registration.update();\r\n }\r\n \r\n // When the user asks to refresh the UI, we'll need to reload the window\r\n var preventDevToolsReloadLoop = false;\r\n \r\n const oldSw = (await navigator.serviceWorker.getRegistration())?.active?.state;\r\n console.log(oldSw, registration)\r\n navigator.serviceWorker.addEventListener('controllerchange', async function (ev) {\r\n const newSw = (await navigator.serviceWorker.getRegistration())?.active?.state;\r\n console.log('Service Worker controller change', ev)\r\n console.log(oldSw, newSw)\r\n // Ensure refresh is only called once.\r\n // This works around a bug in \"force update on reload\".\r\n if (preventDevToolsReloadLoop) return;\r\n \r\n\r\n if(oldSw === 'activated' && newSw === 'activating') {\r\n preventDevToolsReloadLoop = true;\r\n console.log('Reloading...')\r\n window.location.reload();\r\n }\r\n\r\n //window.location.reload();\r\n });\r\n\r\n // onNewServiceWorker(registration, function () {\r\n // console.log('onNewServiceWorker', registration)\r\n // alert('New Update Available');\r\n \r\n // console.log('User okay to update', registration);\r\n // if (!registration.waiting) {\r\n // // Just to ensure registration.waiting is available before calling postMessage()\r\n // return;\r\n // }\r\n // registration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n\r\n // console.log('show refresh')\r\n // });\r\n \r\n registration.onupdatefound = () => {\r\n console.log('registration.onupdatefound', registration.installing)\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n\r\n navigator.serviceWorker.ready.then(function (registration) {\r\n console.log('Service Worker ready');\r\n });\r\n}\r\n\r\n\r\n// function onNewServiceWorker(registration, callback) {\r\n// if (registration.waiting) {\r\n// console.log('onNewServiceWorker-registration.waiting')\r\n// // SW is waiting to activate. Can occur if multiple clients open and one of the clients is refreshed.\r\n// return callback();\r\n// }\r\n\r\n// function listenInstalledStateChange() {\r\n// console.log('listenInstalledStateChange', registration.installing)\r\n// registration.installing.addEventListener('statechange', function (event) {\r\n// console.log('listenInstalledStateChange - statechange', event)\r\n// if (event.target.state === 'installed') {\r\n// // A new service worker is available, inform the user\r\n// callback();\r\n// }\r\n// });\r\n// };\r\n\r\n// if (registration.installing) {\r\n// console.log('onNewServiceWorker-registration.installing')\r\n// return listenInstalledStateChange();\r\n// }\r\n\r\n// // We are currently controlled so a new SW may be found...\r\n// // Add a listener in case a new SW is found,\r\n// registration.addEventListener('updatefound', listenInstalledStateChange);\r\n// }\r\n\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n console.log('Reloading... No SW found')\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport './polyfill';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './_scss/index.scss';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n//ReactDOM.hydrate(, document.getElementById('root'));\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.register({\r\n onUpdate: (registration) => {\r\n console.log('updated', registration);\r\n const update = true;//window.confirm('New Update Available. Do you want to update? (Refresh page)');\r\n if (update){\r\n if (!registration.waiting) {\r\n // Just to ensure registration.waiting is available before calling postMessage()\r\n return;\r\n }\r\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n \r\n }\r\n }\r\n});\r\n","const settings = {\r\n // xs, sm, md, lg, xl, xxl <-- only sample, check your breakpoints settings.\r\n // < 576 768 992 1200 1600\r\n breakpointNames: ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'],\r\n numOfTilesPerBreakpoints: [1, 2, 2, 2, 3, 3],\r\n marginLR: [14, 20, 20, 20, 20, 20],\r\n marginTB: [14, 20, 20, 20, 20, 20],\r\n slickSettings: {\r\n dots: false,\r\n infinite: true,\r\n speed: 500,\r\n autoplaySpeed: 3000,\r\n //fade: false,\r\n autoplay: true,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 1\r\n }\r\n },\r\n {\r\n breakpoint: 576,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n // You can unslick at a given breakpoint now by adding:\r\n // settings: \"unslick\"\r\n // instead of a settings object\r\n ]\r\n }\r\n}\r\n\r\nexports.settings = settings"],"sourceRoot":""}