{"version":3,"sources":["cssInJs/variables.js","config.js","lib/form/controls/FilePond.js","form/controls.js","form/index.js","lib/form/validators/required.js","site/warranty/useStep.js","lib/form/formRenderHelper.js","lib/form/validatorHelper.js","lib/css-emotion/breakpoints.js","lib/css-emotion/mixin.js","cssInJs/index.js","lib/utils-core/url.js","lib/utils-core/form.js","lib/utils-core/array.js","lib/utils-core/date.js","lib/utils-core/css.js","lib/utils-core/ui.js","lib/utils-core/money.js","lib/utils-core/text.js","lib/utils-core/random.js","lib/utils-core/object.js","lib/utils-core/media.js","lib/utils-core/index.js","site/siteUtils.js","utils/index.js","lib/form/components/ValidationAlert.js","components/notFound/notFound.js","lib/app-version/app-version-v2.js","components/form/buttons/button.js","lib/ui-error/errorMessage.js","lib/ui-error/errorPopup.js","lib/ui-loading/sectionLoading.js","lib/net-api/index.js","lib/dev-mediaQueryStatus/index.js","lib/seo/meta-tag.js","lib/seo/tracking--deprecated.js","lib/animation/animationUtils.js","lib/instagram-useInstagram/index.js","lib/ui-parallax/index.js","lib/router/useRouter.js","lib/router/useHistory.js","lib/router/useHistoryStore.js","lib/router/handleLink.js","lib/router/siteLink.js","lib/instagram-feed/feedStyle.js","lib/youtube/youtubeEmbedPopup.js","lib/youtube/youtubeEmbed.js","components/index.js","lib/form/formModelHelper.js","lib/form/formBuilder.js","lib/form/validators/email.js","lib/form/validators/date.js","lib/form/validators/length.js","lib/form/validators.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/TextareaInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/CheckboxInput.js","lib/form/controls/SelectInput.js","lib/form/controls/HiddenInput.js","lib/form/controlRenderer.js","lib/form/formValidate.js","lib/form/useForm.js","lib/form/index.js","lib/store/reducers.js","lib/store/storeProvider.js","store/index.js","lib/polyfill-ie/index.js","lib/youtube/iframeApi.js","cms/utils/cmsUtils.js","cms/items/bannerPanel/view.js","cms/items/bannerItem/view.js","cms/items/panel/view.js","site/embed/instagram.js","site/embed/index.js","cms/items/html/view.js","cms/items/testimonialPanel/view.js","cms/items/testimonialItem/view.js","cms/items/imagePanel/view.js","cms/items/pageTiles/view.js","cms/items/singleBanner/view.js","lib/tracking/gtm.js","cms/items/contactForm/contactForm.js","cms/items/contactForm/contactFormModel.js","cms/items/contactForm/view.js","lib/youtube/youtubeBanner--mobilePopup.js","cms/items/youtubeBannerPanel/view.js","site/product/filterDropdown.js","site/product/productList.js","site/product/sortHelper.js","site/wheretobuy/wheretobuyList.js","site/searchResult/searchResult.js","components/instagramFeedEmbed/instagramFeedEmbed.js","components/TextWithJavaScript/view.js","site/warranty/warrantyLazy.js","site/joinus/joinStyle.js","site/joinus/joinForm.js","site/joinus/joinFormData.js","cms/items/code/view.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","cms/items/productTiles/view.js","cms/items/linkTiles/view.js","cms/items/linkTileItem/view.js","components/expandablePanel/style.js","components/expandablePanel/view.js","cms/items/item.js","cms/pages/viewPage/viewPage.js","cms/services/cms-radio-sender.js","cms/services/cms-radio-receiver.js","cms/services/cms-html-editor.js","cms/services/cms-page-controller.js","cms/pages/editPage/editPage.js","layout/topHeader/searchBar.js","layout/topHeader/navBar.js","layout/topHeader/topHeader.js","layout/topHeader/LandingTopNavStyle.js","layout/topHeader/landingTopNav.js","components/bottomDrawer/index.js","layout/bottomDock/bottomDock.js","site/product/productViewStyle.js","components/breadcrumb/breadcrumb.js","cms/pages/partials/viewPartial.js","cms/pages/partials/commonProductBottom.js","site/product/productView.js","layout/popup/commonVideoPopup.js","AppRouteChanged.js","App.js","serviceWorker.js","index.js","lib/service-worker/swHelper.js","lib/net-loader/loadJs.js","lib/net-loader/index.js","env.js","site/product/productTile.js","site/bazzarVoice/useBV.js","lib/utils-core/debounce.js"],"names":["variables","familyBase","familyHeader","familyHeader2","primaryColor","fontColor","bgColor","breakpointNames","breakpoints","cssEmotion","registerPlugin","FilePondPluginFileValidateSize","FilePondPluginFileValidateType","FilePondPluginImageResize","FilePondPluginImageTransform","FilePondUploader","control","handleChange","formOption","React","files","setFiles","name","errors","label","style","filePond","helpText","attrs","fieldId","utils","random","shortId","fieldLabel","getLabel","ref","customValueFn","current","getFiles","map","x","serverId","className","htmlFor","allowMultiple","maxFileSize","maxFiles","server","process","serverProcess","site","resourcePath","fetch","revert","oninit","console","log","onupdatefiles","fileItems","newVal","persist","target","value","checked","fileItem","file","labelIdle","acceptedFileTypes","allowImageResize","imageResizeTargetWidth","imageResizeUpscale","dangerouslySetInnerHTML","__html","ValidationAlert","getSiteControl","type","Required","message","opt","createValidator","e","validateOpt","triggeredByChange","incomplete","isEmpty","getNameForValidator","val","Array","isArray","length","useStep","initialSteps","useState","steps","setSteps","currentStep","setCurrentStep","lastStep","setLastStep","moveTo","index","canGo","filled","Math","max","i","moveNext","movePrev","markAsFilled","canGoNext","canGoPrev","requiredMark","hasRequiredValidator","text","toFieldName","getLabelAsString","findValidator","validate","disabled","params","defaultOpt","continueToValidate","getValidatorOptions","config","siteConfig","mq","facepaint","bp","mqMin","forEach","mqMax","matches","mediaQuery","window","matchMedia","isMin","isMax","overlay","content","position","top","bottom","left","right","transition","isExternalLink","link","indexOf","getLinkFromElement","el","linkEl","closest","getAttribute","getLinkInfo","origin","location","currentPath","pathname","linkFiltered","replace","linkLower","toLowerCase","isExternal","isHash","isTel","isMailTo","url","path","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","getFolderPath","parentDepth","slice","join","toQueryString","Object","keys","key","encodeURIComponent","getYoutubeId","undefined","getSlug","getWebUrl","schema","getErrors","result","err","push","errorMessage","getErrorMessage","convertToObject","array","reduce","obj","item","convertToKeyValues","moveItem","list","fromIndex","toIndex","splice","removed","removeItem","insertItem","find","fn","findIndex","contains","distinct","comparer","filtered","sum","total","equal","list1","list2","found","j","caseInsensitiveCompare","a","b","localeCompare","compareIgnoreEmpty","asc","isNaN","addDays","date","days","Date","setDate","getDate","formatDate","dateObj","formatStr","toDate","format","formatYYYYMMDDToday","dd","mm","getMonth","yyyy","getFullYear","formatYYYYMMDD","formatDDMMYYYY","parseDate","parseISO","toDateTime","dateStr","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","status","scrollTo","selector","duration","delay","findElement","setTimeout","offset","elementOffset","gsap","to","ease","querySelectorOrNull","querySelector","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","width","height","isElementInViewport","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isNumeric","num","capitalize","expression","charAt","toUpperCase","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","parts","toString","ScrollToPlugin","formatNumber","round","toTelephoneNumber","like","search","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","getImageSetPath","setId","info","getPathDetails","baseFolder","setIds","lastFolder","classNames","form","css","ui","money","object","media","isMobile","env","resourceBase","fullUrl","baseOrigin","getAlternates","alternates","hreflang","href","isNZ","locale","coreUtils","role","NotFound","props","debugInfo","onClick","preventDefault","reload","refreshPage","history","back","goBack","marginTop","color","fontSize","pageUrl","loadFrom","AppVersion","checkStatus","setCheckStatus","ver","updateDate","useEffect","enableForceUpdate","updateSW","then","disableForceUpdate","button","AppVersionPage","margin","Button","children","btnStyle","buttonStyle","aria-hidden","ErrorMessage","summaryMessage","error","ErrorPopup","title","messages","padding","maxWidth","maxHeight","background","transform","zIndex","inx","Loading","loaded","setLoaded","src","alt","useApi","response","setResponse","setErrors","setStatus","request","setRequest","options","apiNetJwt","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","headers","stringify","loading","sending","sendFormData","useGet","get","MediaQueryStatus","display","isProd","MetaTag","seoData","assign","description","keywords","language","country","faceBookDomainVerifi","heroImageUrl","siteName","rel","canonical","MAX","MIN","getScrollProgress","scroll","scrollY","progress","boundsTop","viewport","bounds","setClass","pr","range","prVal","min","y","removeTransform","getScreenSize","useInstagram","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","loadJs","defaultSettings","cutoffPadding","speed","ParallaxData","settings","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","clearTimeout","useRouter","useParams","useLocation","useHistory","useRouteMatch","useMemo","navigate","Redirect","hash","query","queryString","initHistory","historyItem","setHistory","nav","getLast","getPrevious","getPreviousPath","useHistoryStore","useStore","state","dispatch","loc","payload","last","handleElementLink","externalHandler","linkInfo","handled","SiteLink","other","goToLink","stopPropagation","marginLeft","marginRight","justifyContent","flexWrap","flexBasis","cursor","mixin","backgroundColor","YoutubeEmbedPopup","posterUrl","videoId","yt","posterImageUrl","popupIndex","setPopupIndex","backgroundImage","sources","YoutubeEmbed","allow","frameBorder","allowFullScreen","findControl","controlNameOrIndex","root","controls","findControlTraverse","controlName","findControlById","id","findControlByIdTraverse","getValue","getValueTraverse","helperFns","getFilesTraverse","getKeyValueTraverse","keyValue","controlType","findIndexById","this","abstractControl","controlObject","validators","controlOptions","touched","group","controlArray","ctrl","disableValidators","formModelHelper","parent","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","Email","PastDate","PastDateNullAllowed","Length","validateControl","TextInput","usePlaceholder","placeHolder","valueStr","prependText","onChange","onKeyDown","onBlur","autoComplete","placeholder","optionValue","RadioListInput","option","inline","TextareaInput","textAreaRef","useRef","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","disableAutoHeight","h","scrollHeight","minHeight","rows","values","includes","DateSeparateInput","thisYear","year","setYear","month","setMonth","day","setDay","handleChangeInner","months","selectStyle","fromYear","recentYear","handleChangeDay","handleChangeMonth","m","handleChangeYear","FileInput","Components","CheckboxInput","linkText","CheckboxListInput","SelectInput","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","initialState","page","menu","popup","reducer","action","Error","StoreContext","createContext","StoreProvider","useReducer","Provider","useContext","Element","prototype","msMatchesSelector","webkitMatchesSelector","s","parentElement","parentNode","nodeType","loadApi","onApiReady","YT","tag","createElement","onYouTubeIframeAPIReady","firstScriptTag","getElementsByTagName","insertBefore","thumbnailMax","getYoutubeCode","defaultVal","payloads","BannerPanel","subItems","items","cmsOption","heightSet","cmsUtils","slides","subItem","Item","itemId","dots","infinite","autoplaySpeed","fade","autoplay","slidesToShow","slidesToScroll","cssClass","anchorName","data-cms-item-id","isCmsEdit","BannerItem","captionTitle","linkUrl","titlePanel","linkOverlay","Panel","backgroundTile","bgTheme","subItemsElts","InstaEmbedByLink","instagramCode","defaultHolder","storeName","Embed","code","embedType","embedCode","linkOnly","hasScript","getEmbedType","recentlyAdded","parseInt","ts","filter","scripts","forceToReload","removingScripts","promises","script","holder_","holder","Promise","resolve","reject","networkLoaded","part","onload","onerror","appendChild","loadScript","all","loadPinterestJs","html","Html","htmlBlock","cmsViewMode","block","embedDataList","pageData","embed","ReactDOM","render","codeType","replaceEmbedCodes","buttons","restructureButton","iframes","resetYoutubeIframe","data-cms-html","processed","_href","setAttribute","handleClick","span","innerHTML","div","TestimonialPanel","itemElt","itemTypeCode","TestimonialItem","bottomText","ImagePanel","pageOptions","imagePath","_mobileUrl","mobileUrl","rightBg","cssClass2","data-pxh","PageTiles","useSlider","pageTileElts","pagesSerialized","getPages","Tile","disableLink","responsive","breakpoint","pageTitle","tileDesc","SingleBanner","alignV","hasGTM","dataLayer","pageView","pageOpt","event","sendEvent","eventName","sendGAEvent","category","Contact","emailReceiver","fb","modelNumber","phone","email","enquiry","sendingStatus","setSendingStatus","gtm","contactEmail","textAlign","apiBase","fontWeight","ContactForm","YoutubeBannerMobilePopup","youtubeBannerRef","playerStatus","setPlayerStatus","playerSize","setPlayerSize","ytPlayer","setYtPlayer","muted","setMuted","countPlayedRef","popupOpened","setPopupOpened","video","videoLinkOrId","playerId","mobileImageUrl","canPlayVideo","loadVideo","container","sizeCalculator","containerSize","w","size","getSize","player","Player","events","onStateChange","PlayerState","ENDED","countPlayed","playVideo","onReady","mute","onError","resized","debounce","canPlay","Fragment","enablejsapi","loop","showinfo","modestbranding","allowfullscreen","wmode","pauseVideo","unMute","channel","isOpen","onClose","YoutubeBannerPanel","videoCode","FilterDropdown","isMulti","currentSelection","customStyles","provided","styles","selected","isSearchable","theme","colors","primary25","primary","ProductList","filters","setFilters","sortBy","setSortBy","showAll","setShowAll","useBV","showReview","searchParam","results","searchResult","distinctFilters","getDistinctFilters","f","getFilterTitle","filterItems","sortItems","every","filterCodes","fc","getFilteredItems","sort","productName","price","sortHelper","maxListing","showMoreButton","totalCnt","clearText","rightAligned","product","productCode","filterName","filterCode","WhereToBuyList","Stores","stores","store","storeCode","iconPath","buyOnline","storeUrl","SearchResult","keyword","q","productsOn","products","productStatus","pages","PageList","searchHighlight","InstagramFeedEmbed","existingScript","getElementById","removeChild","class","data-ref","TextWithJavScript","javaScriptCode","substring","nonjavaScriptCode","javaScriptTopCode","javaScriptInsideCode","_src","async","defer","_functionName","functionName","Warranty","lazy","WarrantyLazy","fallback","step","flex","opacity","paddingLeft","paddingRight","navs","marginBottom","navCurrent","navFilled","navClickable","joinForm","stepsWrapper","overflow","textTransform","stepCurrent","stepPrev","stepNext","stepLast","arrow","arrowPrev","arrowNext","Join","model1","firstName","lastName","form1","model2","mobile","getFormDataStep2","form2","model3","dob","postcode","getFormDataStep3","form3","model5","interestList","interests","getFormDataStep5","form5","navEl","stepStyle","next","onSubmit","getSelection","stepView","Step1","Step2","Step3","Step5","Step6","selection","SocialLinks","instaLink","siteCode","youtubeLink","data-widget","Code","codeJson","searchType","border","BlogPosts","posts","numOfTileLines","tilesPerLine","xs","sm","md","lg","xl","xxl","numOfPost","tilesToShow","setTilesToShow","displayingPosts","showMore","BlogPostTitle","VideoHolder","VideoItem","youtubeCode","posterFrameUrl","captionTitleYoutube","shortDesc","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","ExpandableHtml","open","setOpen","buttonTitle","icon","iconOpen","iconClosed","panelCollapsed","panelOpen","ProductTiles","productCodes","TilesFromCodes","LinkTiles","maxItemsNumber","sliderContainer","tiles","numOfSlides","maxNum","centerMode","centerPadding","onInit","_willBecomSmallBigImgs1","_willBecomSmallBigImgs2","_willBecomSmallBigImgs3","_willBecomSmallBigImgs4","beforeChange","_indexNumb1","_indexNumb2","_indexNumb3","_indexNumb4","LinkTileItem","captionButton","exTextItem","ExpandablePanel","data-anchor-status","data-cms-item-anchor","data-cms-anchor","PageMemo","memo","sectionItems","sections","section","Section","sectionName","getMetaTag","pageTypeCode","prevProps","nextProps","ViewPage","pageLoaded","setPageLoaded","setData","redirectTo","_landingTopNavCms","FaceBookDomainVerifiNZ","FaceBookDomainVerifiAU","CmsRadioSender","controller","cloned","postMessage","htmlChanges","sendMessageToParent","returnTo","CmsRadioReceiver","self","selectItem","mediaSelectedCKEditor","getAllDirtyHtml","sender","returnAllDirtyHtml","getHtml","returnHtml","tools","callFunction","funcNum","selectedPath","selectItemFromController","CmsHtmlEditor","cmsEndpoint","ckeditorConfig","startupFocus","filebrowserBrowseUrl","filebrowserImageBrowseUrl","extraPlugins","toolbar","groups","extraAllowedContent","ckeditorStylesSet","attributes","$editor","CKEDITOR","disableAutoInline","editor","stylesSet","on","evt","ed","markDirtyHtml","instances","cmsCurrentEditor","getData","destroy","CmsPageController","viewOnly","receiver","htmlEditor","$","initGlobalVars","prop","off","attr","is","ctrlKey","which","saveAllDirtyHtml","$item","fromController","doubleclicked","cke_top","closeEditingItem","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","catch","SearchBar","onCloseMenu","setKeyword","NavBar","currentLocation","menuItemElts","MenuItem","subMenuOpened","setSubMenuOpened","SubMenuItem","toggleSubmenu","TopHeader","menuOpened","setMenuOpened","setCurrentLocation","anchor","routeChanged","behavior","aria-label","paddingHalf","topNav","skew","transformOrigin","unskew","alignItems","LandingTopNav","BottomDrawer","defaults","slider","currentTranslateY","inititialised","tsEventHandled","hammer","Hammer","Manager","Pan","direction","DIRECTION_VERTICAL","threshold","switch","deltaY","moveDeltaTmp","initEvent","bar","delta","getBaseY","move","targetY","getTargetY","fromTo","links","barHeight","dy","BottomDock","isCurrent","linkElts","bottomMenu","instagrams","singBanner","backgroundPosition","Breadcrumb","breadcrumb","ViewPartial","CommonProductBottom","ProductView","slug","Product","mainPhoto","productImages","allPhotos","packagePhotos","isPackage","popupImages","setIsMobile","currentTab","setCurrentTab","heroImage","setHeroImage","toggler","setToggler","schemaImages","settingSchemaInterval","setInterval","bvRatingSchema","bvRatingSchemaData","productStructuredData","productUrl","intro","sku","brand","gtin13","barcode","image","aggregateRating","offers","priceCurrency","availability","itemCondition","productSchemaScript","head","clearInterval","checkBvReviewSchemaSI","bvReviewSchemaScript","bv","onShowReview","useCallback","showTab","openPopupImage","tab","forceToScroll","photo","initialSlide","visibleTabs","tabView","WhereToBuyTab","visible","whereToBuySection","whereToBuys","BVReviewTab","DetailsTab","HowtoTab","SeeMoreTab","seeMoreSection","FaqTab","faqSection","tabPanels","discoverMoreLinks","discoverMoreSection","itemValue","barcodeCleaned","sourceIndex","itemScope","itemType","itemProp","priceText","data-bv-show","data-bv-product-id","RelatedProducts","relatedProducts","metaDesc","ItemList","howToSection","detailSection","hasWarranty","techSpecs","specSection","specs","splitLefts","splitRights","TechSpecs","hasTech","warranty","warrantyYear","warrantyDetails","useSparePartInstruction","SparePart","bookletLink","Booklet","blogs","pre","hasInstaOrBlog","linkType","Empty","ItemView","desc","instagramUseFirst","instagramEmbed","PageTile","qa","qaQuestion","question","qaAnswer","answer","spec","CommonVideoPopup","setSources","onOpen","AppRouteChanged","parallax","AppLayout","checkUpdate","AOS","useScrollPosition","prevPos","currPos","App","isLocalhost","Boolean","hostname","serviceUpdateCheckerInterval","registerValidSW","swUrl","navigator","serviceWorker","register","updateViaCache","registration","scope","waiting","update","preventDevToolsReloadLoop","getRegistration","active","oldSw","ev","newSw","onupdatefound","installing","installingWorker","onstatechange","onUpdate","onSuccess","URL","contentType","ready","unregister","checkValidServiceWorker","forceUpdateFlagged","markUpdate","localStorage","setItem","getItem","unmarkUpdate","hasUpdate","loadedJs","existing","getLocale","getCountry","GATSBY_BASEURL","getBaseUrl","bvClientId","bvSiteId","bvEnv","bvLocale","REACT_APP_COUNTRY_LOCALE","productThumbnail","data-bv-seo","prd","reviewClicked","bvCallback","BV","swat_reviews","pixel","trackConversion","sendTransactionEvent","orderId","trackTransaction","ms","timer","_","apply","arguments"],"mappings":"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","file":"static/js/main.0662b111.chunk.js","sourcesContent":["const overloading = {\n breakpointNames: ['sm', 'md', 'lg', 'xl', 'xxl'],\n breakpoints: [576, 768, 992, 1200, 1600]\n}\n\nconst variables = {\n familyBase: '\"Roboto\",sans-serif',\n familyHeader: '\"Bayon\",serif',\n familyHeader2: '\"Permanent Marker\",serif',\n\n primaryColor: '#faa222',\n fontColor: '#404040',\n bgColor: '#ebebeb',\n\n ...overloading\n}\n\nexport default variables;","import variables from './cssInJs/variables';\n\nconst cssEmotion = {\n breakpointNames: variables.breakpointNames,\n breakpoints: variables.breakpoints\n}\n\nexport default {\n cssEmotion\n}","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nimport 'filepond-polyfill';\r\n\r\n// Import React FilePond\r\nimport { FilePond, registerPlugin } from \"react-filepond\";\r\n\r\n// Import FilePond styles\r\nimport \"filepond/dist/filepond.min.css\";\r\n\r\n// Import the plugin code\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\nimport FilePondPluginImageTransform from 'filepond-plugin-image-transform';\r\n\r\n// Register the plugin\r\nregisterPlugin(FilePondPluginFileValidateSize);\r\nregisterPlugin(FilePondPluginFileValidateType);\r\nregisterPlugin(FilePondPluginImageResize);\r\nregisterPlugin(FilePondPluginImageTransform);\r\n\r\nfunction FilePondUploader({ control, handleChange, formOption }) {\r\n const [files, setFiles] = React.useState([])\r\n const { name, label, errors, style, filePond = {}, helpText, attrs } = control;\r\n //console.log(filePond)\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n\r\n\r\n const ref = React.useRef(null);\r\n function handleInit() {\r\n console.log(ref.current);\r\n }\r\n\r\n control.customValueFn = (control) => {\r\n if (!ref.current) return [];\r\n return ref.current.getFiles().map(x => x.serverId);\r\n }\r\n\r\n const onUpdated = fileItems => {\r\n //console.log(fileItems, JSON.stringify(fileItems))\r\n // Set currently active file objects to this.state\r\n const newVal = fileItems.map(x => x.serverId)\r\n //console.log(newVal)\r\n handleChange({\r\n persist: () => { },\r\n target: { name: name, value: newVal, checked: false }\r\n }, control)\r\n setFiles(fileItems.map(fileItem => fileItem.file));\r\n }\r\n\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n\r\n handleInit()}\r\n onupdatefiles={onUpdated}\r\n labelIdle={filePond.labelIdle || `Drag & Drop your files or Browse `}\r\n acceptedFileTypes={filePond.acceptedFileTypes || []}\r\n allowImageResize={filePond.allowImageResize || false}\r\n imageResizeTargetWidth={filePond.imageResizeTargetWidth || 2560}\r\n imageResizeUpscale={filePond.imageResizeUpscale || false}\r\n {...attrs}\r\n />\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n\r\n )\r\n}\r\n\r\nexport default FilePondUploader;","//import HtmlInput from 'lib/form/controls/HtmlInput--ckeditor';\nimport FilePondUploader from '../lib/form/controls/FilePond';\n\nexport function getSiteControl(control, formOption) {\n // if (control.type === 'html')\n // return HtmlInput;\n if (control.type === 'filePond')\n return FilePondUploader;\n return null;\n}\n\n","export { fb, validators, formModelHelper, validatorHelper, useForm, useStep } from '../lib/form';\nexport { getSiteControl } from './controls';","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Required(message = null, opt = null) {\r\n return createValidator('required', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return isEmpty(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' is required.')) : null\r\n })\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import React from 'react';\n\nexport function useStep(initialSteps){\n const [steps, setSteps] = React.useState(initialSteps);\n const [currentStep, setCurrentStep] = React.useState(0);\n const [lastStep, setLastStep] = React.useState(0);\n\n const moveNext = () => {\n moveTo(currentStep < steps.length ? currentStep + 1 : currentStep)\n }\n\n const movePrev = () => {\n moveTo(currentStep > 0 ? currentStep - 1 : 0)\n }\n\n const moveTo = (index) => {\n if (!canGo(index)) return\n setLastStep(currentStep)\n setCurrentStep(index)\n // if (!utils.ui.isElementInViewport(navEl.current)) {\n // utils.ui.scrollTo(navEl.current)\n // }\n }\n\n const markAsFilled = (index) => {\n if (!steps[index]) return;\n steps[index].filled = true;\n setSteps(steps);\n }\n \n function canGo(index) {\n if (steps[index] && steps[index].filled) return true;\n const maxIndexFilled = Math.max(...steps.map((x, i) => x.filled ? i : -1));\n return index <= maxIndexFilled + 1\n }\n\n function canGoNext() {\n return currentStep < steps.length && canGo(currentStep + 1)\n }\n\n function canGoPrev() {\n return currentStep > 0 && canGo(currentStep - 1)\n }\n\n return { steps, setSteps, currentStep, lastStep, moveTo, moveNext, movePrev, markAsFilled, canGo, canGoNext, canGoPrev}\n}","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 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 facepaint from 'facepaint'\r\nimport siteConfig from '../../config';\r\n\r\nconst config = siteConfig.cssEmotion\r\nconst breakpointNames = (config && config.breakpointNames) || ['sm', 'md', 'lg', 'xl', 'xxl']\r\nconst breakpoints = (config && config.breakpoints) || [576, 768, 992, 1200, 1600]\r\n\r\nconst mq = facepaint(\r\n breakpoints.map(bp => `@media (min-width: ${bp}px)`)\r\n)\r\n\r\nconst mqMin = {};\r\nbreakpointNames.forEach((bp, index) => mqMin[bp] = `@media (min-width: ${breakpoints[index]}px)`)\r\n\r\nconst mqMax = {};\r\nbreakpointNames.forEach((bp, index) => mqMax[bp] = `@media (max-width: ${breakpoints[index] - 1}px)`)\r\n//console.log(mqMin, mqMax)\r\n\r\nconst matches = (mediaQuery) => !!window.matchMedia(mediaQuery).matches\r\nconst isMin = {};\r\nbreakpointNames.forEach((bp, index) => isMin[bp] = () => matches(`(min-width: ${breakpoints[index]}px)`))\r\n\r\nconst isMax = {};\r\nbreakpointNames.forEach((bp, index) => isMax[bp] = () => matches(`(max-width: ${breakpoints[index] - 1}px)`))\r\n\r\nexport { mq, mqMin, mqMax, isMin, isMax }","export function overlay() {\r\n return {\r\n content: `''`,\r\n position: 'absolute',\r\n top:0,\r\n bottom:0,\r\n left: 0,\r\n right: 0,\r\n transition: 'all 0.5s'\r\n }\r\n}","import variables from './variables'\nimport { mq, mqMin, mqMax, mixin } from '../lib/css-emotion'\n\nexport { variables, mixin, mq, mqMin, mqMax }","export function isExternalLink(link){\r\n return link && (link.indexOf('https://') === 0 || link.indexOf('http://') === 0 || link.indexOf('://') === 0);\r\n}\r\n\r\nexport function getLinkFromElement(el){\r\n if (!el) return null;\r\n const linkEl = el.closest('a');\r\n //console.log(el, linkEl);\r\n if (linkEl){\r\n return linkEl.getAttribute('href');\r\n }\r\n return null;\r\n}\r\n\r\n\r\n// router utils\r\nexport function getLinkInfo(link) {\r\n if (!link) return null;\r\n\r\n const origin = typeof window !== `undefined` && window.location && window.location.origin;\r\n const currentPath = typeof window !== `undefined` && window.location && window.location.pathname;\r\n let linkFiltered = link.replace(origin, '').replace(currentPath + '#', '#');\r\n let linkLower = link.toLowerCase();\r\n\r\n //if (isStaticFile(linkLower)) return null;\r\n const isExternal = isExternalLink(linkFiltered);\r\n const isHash = linkFiltered.indexOf('#') === 0;\r\n const isTel = linkFiltered.indexOf('tel:') === 0;\r\n const isMailTo = linkFiltered.indexOf('mailto:') === 0;\r\n const type = (isHash && 'hash') || (isTel && 'tel') || (isMailTo && 'mailto') || \r\n (isStaticFile(linkLower) && 'static') || (isExternal && 'external') || 'internal';\r\n\r\n return { url: linkFiltered, type: type, ext: getExtension(link) };\r\n}\r\n\r\nvar exts = ['.pdf', '.jpg', '.png', '.gif', '.docx', '.doc']\r\nfunction isStaticFile(path) {\r\n for(let i = 0; i < exts.length; i++) {\r\n if (path.indexOf(exts[i]) >= 0) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function getExtension(filename) {\r\n if (!filename || filename.indexOf('.') < 0) return null;\r\n return filename.split('.').pop().toLowerCase();\r\n}\r\n\r\nexport function getFilename(url) {\r\n return url.split('/').pop().split('?')[0];\r\n}\r\n\r\nexport function getFolderPath(url, parentDepth = -1) {\r\n return url.split('/').slice(0, parentDepth).join('/');\r\n}\r\n\r\n//\r\nexport function toQueryString(params) {\r\n var queryString = Object.keys(params).map((key) => {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\r\n }).join('&');\r\n return queryString;\r\n}\r\n\r\nexport function getYoutubeId(url){\r\n url = url.split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\r\n return (url[2] !== undefined) ? url[2].split(/[^0-9a-z_-]/i)[0] : url[0];\r\n}\r\n\r\nexport function getSlug(text){\r\n return text.toLowerCase().replace(/ /g,'-').replace(/[-]+/g, '-').replace(/[^\\w-]+/g,'');\r\n}\r\n\r\nexport function getWebUrl(url, schema = 'https://'){\r\n if (!url) return null;\r\n if (url.indexOf('https:') >= 0 || url.indexOf('http:') >= 0 || url.indexOf(':') >= 0) {\r\n return url;\r\n }\r\n return schema + url;\r\n}","//#region error json parsing\r\nexport const getErrors = (result) => {\r\n let errors = [];\r\n if (result && result.errors && result.errors.length > 0) {\r\n result.errors.forEach(err => {\r\n errors.push(err.errorMessage);\r\n });\r\n }\r\n return errors;\r\n}\r\n\r\nexport const getErrorMessage = (result) => {\r\n let errors = getErrors(result);\r\n return errors.join(\" \");\r\n}\r\n//#endregion","//#region conversion between array and object\r\nexport const convertToObject = (array, key) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item,\r\n };\r\n }, initialValue);\r\n};\r\n\r\nexport const convertToKeyValues = (array, key, value) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item[value],\r\n };\r\n }, initialValue);\r\n};\r\n//#endregion\r\n\r\n//#region array helper functions\r\nexport const moveItem = (list, fromIndex, toIndex) => {\r\n //const list = Array.from(array);\r\n const [removed] = list.splice(fromIndex, 1);\r\n list.splice(toIndex, 0, removed);\r\n\r\n return list;\r\n};\r\n\r\nexport const removeItem = (list, index) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 1);\r\n\r\n return list;\r\n};\r\n\r\nexport const insertItem = (list, index, item) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 0, item);\r\n\r\n return list;\r\n};\r\n\r\n\r\nexport const find = (list, fn) => {\r\n if (!list) return null;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return list[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findIndex = (list, fn) => {\r\n if (!list) return -1;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nexport const contains = (list, fn) => {\r\n return findIndex(list, fn) >= 0;\r\n}\r\n\r\n// utils.array.distinct(images, (x, y) => x.imageUrl === y.imageUrl)\r\nexport const distinct = (list, comparer) => {\r\n const filtered = []\r\n for (let i = 0; i < list.length; i++) {\r\n if (!contains(filtered, (x) => comparer(x, list[i]))) {\r\n filtered.push(list[i])\r\n }\r\n }\r\n return filtered;\r\n}\r\n\r\nexport const sum = (list, fn) => {\r\n if (!list) return 0;\r\n let total = 0;\r\n for (let i = 0; i < list.length; i++) {\r\n total += fn(list[i]) || 0\r\n }\r\n return total\r\n}\r\n\r\nexport const equal = (list1, list2, fn) => {\r\n if (!list1 && !list2) return true;\r\n if (!list1 || !list2) return false;\r\n if (list1.length !== list2.length) return false;\r\n for (let i = 0; i < list1.length; i++) {\r\n let found = false;\r\n for (let j = 0; j < list2.length; j++) {\r\n if(fn(list1[i], list2[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) return false;\r\n }\r\n return true;\r\n}\r\n//#endregion\r\n\r\n//#region sorting helpers\r\nexport const caseInsensitiveCompare = function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n}\r\n\r\n// put the null items at the end.\r\nexport const compareIgnoreEmpty = function (asc) {\r\n return asc ?\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || +(a > b) || -(a < b);\r\n }\r\n :\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || -(a > b) || +(a < b);\r\n }\r\n}\r\n//#endregion","import parse from \"date-fns/parse\";\r\nimport parseISO from \"date-fns/parseISO\";\r\nimport format from \"date-fns/format\";\r\n\r\n//#region manipulation\r\nexport const addDays = (date, days) => {\r\n var result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n};\r\n//#endregion\r\n\r\n//#region format\r\nexport function formatDate(dateObj, formatStr) {\r\n const date = toDate(dateObj);\r\n if (!date) return \"\";\r\n return format(date, formatStr);\r\n}\r\n\r\nexport function formatYYYYMMDDToday() {\r\n const date = new Date();\r\n //console.log(dateObj, date)\r\n if (!date) return '';\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = '0' + dd;\r\n } \r\n if (mm < 10) {\r\n mm = '0' + mm;\r\n } \r\n return (`${yyyy}-${mm}-${dd}`)\r\n}\r\n\r\nexport function formatYYYYMMDD(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${yyyy}-${mm}-${dd}`;\r\n}\r\n\r\nexport function formatDDMMYYYY(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${dd}-${mm}-${yyyy}`;\r\n}\r\n//#endregion\r\n\r\n//#region parse\r\nexport function toDate(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd\") ||\r\n parseDate(dateObj, \"yyyy-M-d\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy\") ||\r\n parseDate(dateObj, \"d/M/yyyy\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function toDateTime(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-MM-dd HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-M-d HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"d/M/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function parseDate(dateStr, format) {\r\n const date = parse(dateStr, format, new Date());\r\n return date && isValidDate(date) ? date : null;\r\n}\r\n\r\nexport function isValidDate(d) {\r\n return d instanceof Date && !isNaN(d);\r\n}\r\n//#endregion\r\n","//#region background images\r\nexport const bgUrl = (imageUrl) => {\r\n return `background-image:url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n\r\nexport const bgUrlStyle = (imageUrl) => {\r\n return `url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n//#endregion\r\n\r\n//#region screen/element size\r\nexport const screenWidth = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerWidth ||\r\n document.documentElement.clientWidth ||\r\n document.body.clientWidth\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const screenHeight = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const outerWidth = el => el.offsetWidth\r\nexport const outerHeight = el => el.offsetHeight\r\n//#endregion\r\n\r\n//#region css class\r\n/**\r\n * Check if element has the css class on it.\r\n */\r\nexport const hasClass = (el, className) => {\r\n if (el.classList) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!el.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`))\r\n}\r\n\r\n/**\r\n * Adds the provided css className to the element.\r\n */\r\nexport const addClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.add(className)\r\n return\r\n }\r\n\r\n if (!hasClass(el, className)) {\r\n el.className += ` ${className}`\r\n }\r\n}\r\n\r\n/**\r\n * Remove the provided css className from the element.\r\n */\r\nexport const removeClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.remove(className)\r\n return\r\n }\r\n\r\n if (hasClass(el, className)) {\r\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`)\r\n el.className = el.className.replace(reg, ' ')\r\n }\r\n}\r\n\r\n/**\r\n * Adds or removes a class name on the input depending on the status flag.\r\n */\r\nexport const toggleClass = (el, className, status) => {\r\n if (!el || !className) return\r\n\r\n if (status) {\r\n return addClass(el, className)\r\n }\r\n\r\n removeClass(el, className)\r\n}\r\n//#endregion","import { gsap } from 'gsap';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\n\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport function scrollTo(selector, duration = 750, delay = 0) {\r\n const el = findElement(selector);\r\n if (el) {\r\n setTimeout(() => {\r\n //console.log(element);\r\n const offset = elementOffset(el);\r\n //console.log(offset)\r\n //window.scrollTo(0, offset.top - 300);\r\n\r\n gsap.to(window, {duration: (duration/1000), scrollTo: offset.top - 100, ease: 'power1'});\r\n\r\n }, delay);\r\n //el.scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' }); }, timeout);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function findElement(selector) {\r\n if (typeof selector !== 'string') return selector;\r\n\r\n let found = querySelectorOrNull(selector)\r\n || querySelectorOrNull('#' + selector)\r\n || querySelectorOrNull('.' + selector)\r\n \r\n return found;\r\n}\r\n\r\nexport function querySelectorOrNull(selector) {\r\n try {\r\n return document.querySelector(selector);\r\n } catch(e){\r\n return null;\r\n };\r\n}\r\n\r\nexport function elementOffset(el) {\r\n var rect = el.getBoundingClientRect(),\r\n scrollLeft = typeof window !== `undefined` ? (window.pageXOffset || document.documentElement.scrollLeft) : 0,\r\n scrollTop = typeof window !== `undefined` ? (window.pageYOffset || document.documentElement.scrollTop) : 0;\r\n\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft, width: el.offsetWidth, height: el.offsetHeight }\r\n}\r\n\r\nexport function isElementInViewport (el) {\r\n if (typeof window !== `undefined`) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\r\n );\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nexport function getCurrentBreakpoint() {\r\n if (typeof window === `undefined`) return null;\r\n \r\n const bpHolder = document.querySelector('.devMediaQueryStatus__current');\r\n if (!bpHolder) return null;\r\n return window.getComputedStyle(bpHolder, ':before').getPropertyValue('content').replace(/[\"']/g, '');\r\n}\r\n\r\n","export function formatMoney(number, fraction = 0) {\r\n var formatter = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n minimumFractionDigits: fraction,\r\n });\r\n\r\n return formatter.format(number);\r\n}\r\n\r\nexport function toMonthlyCost(amount, frequency) {\r\n if (!amount) return 0;\r\n if (frequency === 'Week') {\r\n return amount * 52.1429 / 12.0;\r\n } else if (frequency === 'Fortnight') {\r\n return amount * 52.1429 / 2.0 / 12.0;\r\n } else if (frequency === 'Month') {\r\n return amount;\r\n } else if (frequency === 'Quarter') {\r\n return amount * 4.0 / 12.0;\r\n } else if (frequency === 'Year') {\r\n return amount / 12.0;\r\n } else {\r\n return amount;\r\n }\r\n}\r\n","export function isBlank(str) {\r\n return (!str || /^\\s*$/.test(str))\r\n}\r\n\r\nexport function isEmpty(str) {\r\n return (!str || str.length === 0)\r\n}\r\n\r\nexport function isNumeric(num){\r\n return !isNaN(num)\r\n}\r\n\r\nexport function capitalize(expression) {\r\n return expression.charAt(0).toUpperCase() + expression.slice(1);\r\n}\r\n\r\nexport function toFieldName(str) {\r\n if (!str) return null;\r\n return capitalize((str.replace(/([A-Z]+)/g, ' $1').replace(/([A-Z][a-z])/g, ' $1')).trim());\r\n}\r\n\r\nexport function toHtml(str) {\r\n if (!str) return null;\r\n return str.replace(/[\\n\\r]/g, '
')\r\n}\r\n\r\n// Shorten a string to less than maxLen characters without truncating words.\r\nexport function truncateWords(str, maxLen, separator = ' ', ellipsis = '...') {\r\n if (str.length <= maxLen) return str\r\n var pos = str.lastIndexOf(separator, maxLen)\r\n return str.substr(0, pos) + ellipsis\r\n}\r\n\r\nexport function numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n}\r\n\r\nexport const formatNumber = (value) => {\r\n if (value === 0) return '0';\r\n if (!value) return '';\r\n return Math.round(value * 100) / 100\r\n}\r\n\r\nexport const toTelephoneNumber = (str) => {\r\n return (str || []).replace(/[^+\\d]+/g, \"\");\r\n\r\n}\r\n\r\n// utils.text.like('text here', '%keyword%')\r\nexport const like = (str, search) => {\r\n if (typeof search !== 'string' || str === null) { return false; }\r\n // Remove special chars\r\n search = search.replace(new RegExp(\"([\\\\.\\\\\\\\\\\\+\\\\*\\\\?\\\\[\\\\^\\\\]\\\\$\\\\(\\\\)\\\\{\\\\}\\\\=\\\\!\\\\<\\\\>\\\\|\\\\:\\\\-])\", \"g\"), \"\\\\$1\");\r\n // Replace % and _ with equivalent regex\r\n search = search.replace(/%/g, '.*').replace(/_/g, '.');\r\n // Check matches\r\n return RegExp('^' + search + '$', 'gi').test(str);\r\n\r\n}","import shortid from 'shortid';\r\nimport uuid from 'uuid/v4';\r\n\r\nexport function shortId() {\r\n return shortid();\r\n}\r\n\r\nexport function guid() {\r\n return uuid();\r\n}","export function toCamel(o) {\r\n var newO, origKey, newKey, value\r\n if (o instanceof Array) {\r\n return o.map(function(value) {\r\n if (typeof value === \"object\") {\r\n value = toCamel(value)\r\n }\r\n return value\r\n })\r\n } else {\r\n newO = {}\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()\r\n value = o[origKey]\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = toCamel(value)\r\n }\r\n newO[newKey] = value\r\n }\r\n }\r\n }\r\n return newO\r\n}","import { getFilename } from './url';\r\nimport { contains } from './array';\r\nexport function getImageSetPath(url, setId) {\r\n const info = getPathDetails(url)\r\n if (!info) return url;\r\n //console.log(url, info);\r\n return info.baseFolder + \"/@\" + setId + '/' + info.filename\r\n}\r\n\r\nexport function getPathDetails(url, setIds) {\r\n if (!url) return null;\r\n const parts = url.split('/').slice(0, -1);\r\n if (parts.length <= 1) return { baseFolder: '/', setId: null, filename: getFilename(url) };\r\n\r\n const lastFolder = parts[parts.length - 1];\r\n const hasSet = setIds && setIds.length > 0 ? contains(setIds, x => x === lastFolder) : lastFolder.indexOf('@') === 0;\r\n\r\n return hasSet ?\r\n { baseFolder: parts.slice(0, -1).join('/'), setId: lastFolder, filename: getFilename(url) } :\r\n { baseFolder: parts.join('/'), setId: null, filename: getFilename(url) }\r\n}","import classNames from 'classnames';\r\nimport * as url from './url';\r\nimport * as form from './form';\r\nimport * as array from './array';\r\nimport * as date from './date';\r\nimport * as css from './css';\r\nimport * as ui from './ui';\r\nimport * as money from './money';\r\nimport * as text from './text';\r\nimport * as random from './random';\r\nimport * as object from './object';\r\nimport * as media from './media';\r\n\r\nexport default { classNames, url, form, array, date, css, ui, money, text, random, object, media};","import utils from \"../utils\";\nimport env from '../env';\n\nexport const isMobile = () => {\n var width = utils.css.screenWidth()\n return width < 768\n}\n\nexport function resourcePath(url){\n return utils.url.isExternalLink(url)? url : env.resourceBase + url;\n}\n\nexport function fullUrl(url){\n return utils.url.isExternalLink(url)? url : env.baseOrigin + url;\n}\n\nexport function getAlternates(path){\n const alternates = [];\n\n alternates.push({hreflang: \"en-au\", href: \"https://www.conairman.com.au\" + path})\n alternates.push({hreflang: \"en-nz\", href: \"https://www.www.conairman.co.nz\" + path})\n alternates.push({hreflang: \"x-default\", href: \"https://www.conairman.com.au\" + path})\n\n return alternates;\n}\n\nexport const isNZ = env.locale === 'nz'","import coreUtils from '../lib/utils-core';\nimport * as site from '../site/siteUtils';\n\nexport default { ...coreUtils, site };","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 React from 'react';\n\nexport function NotFound(props) {\n const debugInfo = props.debugInfo;\n\n function refreshPage(e) {\n e.preventDefault();\n if (typeof window !== `undefined`) {\n window.location.reload();\n }\n }\n\n function goBack(e) {\n e.preventDefault();\n if (typeof window !== `undefined`) {\n window.history.back();\n }\n }\n\n return (\n
\n
\n

404 Error

\n\n

Please refreshPage(e)}>refresh your browser.

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

{title}

\r\n {props.children}\r\n {messages.map((error, inx) => (\r\n
\r\n ))}\r\n \r\n
\r\n}\r\n","import React from 'react';\r\n//import LoadingIcon from 'loading.svg';\r\n\r\nexport function Loading(props) {\r\n const [loaded, setLoaded] = React.useState(false);\r\n //console.log('loading', loaded)\r\n React.useEffect(() => {\r\n //console.log('loaded')\r\n setLoaded(true);\r\n }, [])\r\n return
\r\n \"Loading\r\n {/* \"Loading */}\r\n
\r\n}","import { useState, useEffect } from 'react';\r\nimport utils from '../../utils';\r\nimport siteConfig from '../../config';\r\n\r\nexport function useApi(fn) {\r\n //console.log('useApi')\r\n const [response, setResponse] = useState({});\r\n const [errors, setErrors] = useState([]);\r\n const [status, setStatus] = useState('ready');\r\n const [request, setRequest] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!request) return;\r\n\r\n //console.log('fetch now')\r\n setResponse(null);\r\n setErrors([]);\r\n setStatus('ready');\r\n\r\n const fetchData = async () => {\r\n setStatus('pending');\r\n try {\r\n //console.log(request);\r\n const options = request.options || {}\r\n siteConfig.apiNetJwt && await siteConfig.apiNetJwt(options);\r\n\r\n const res = await fetch(request.url, options);\r\n //console.log(res);\r\n\r\n if (!res.ok) {\r\n try {\r\n const json = await res.json();\r\n console.log(json);\r\n\r\n if (json.message) {\r\n setErrors([json.message]);\r\n setStatus('error')\r\n return;\r\n }\r\n } catch (e) { }\r\n\r\n const statusText = res.status === 401 ? 'Permission denied. Please login first.' : res.statusText\r\n setErrors(['Error - [' + res.status + ']' + (statusText && (' - ' + statusText))]);\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n //const json = await res.json();\r\n const text = await res.text();\r\n const json = text && text.length ? JSON.parse(text) : null;\r\n //console.log(json);\r\n\r\n // check if ajax result from c#\r\n if (json && json.errors && json.errors.length > 0) {\r\n setErrors(utils.form.getErrors(json));\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n setResponse(json);\r\n setStatus('done')\r\n } catch (err) {\r\n //console.log(error, error.toString(), typeof error, JSON.stringify(error))\r\n setErrors([err.toString()]);\r\n setStatus('error')\r\n }\r\n };\r\n fetchData();\r\n }, [request]);\r\n\r\n const containsErrorMessage = (msg) => {\r\n const finding = (msg || '').toLowerCase()\r\n return errors.some(x => (x || '').toLowerCase().indexOf(finding) >= 0)\r\n }\r\n\r\n //return [ response, error, status, (...args) => setRequest(fn(...args)) ];\r\n return {\r\n request: request,\r\n response: response,\r\n errors: errors,\r\n status: status,\r\n hasErrors: () => status === 'error',\r\n containsErrorMessage: containsErrorMessage,\r\n addErrors: (errs) => {\r\n setErrors(...errors, ...errs)\r\n setStatus('error')\r\n },\r\n done: () => status === 'done',\r\n send: (...args) => { setStatus('ready'); setRequest(fn(...args)) },\r\n sendRaw: (httpOptionFn, ...args) => { setStatus('ready'); setRequest(httpOptionFn(...args)) },\r\n setResult: (json) => { setResponse(json); setStatus('done') },\r\n reset: () => {\r\n setStatus('ready');\r\n setErrors([]);\r\n }\r\n };\r\n}\r\n\r\nexport function usePost() {\r\n const formDataFn = (url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n body: data // FormData\r\n }\r\n });\r\n const post = useApi((url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data)\r\n }\r\n })\r\n );\r\n return {\r\n ...post,\r\n loading: () => post.status === 'ready' || post.status === 'pending',\r\n sending: () => post.status === 'pending',\r\n sendFormData: (...args) => post.sendRaw(formDataFn, ...args)\r\n }\r\n}\r\n\r\nexport function useGet() {\r\n const get = useApi((url, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'GET'\r\n }\r\n })\r\n );\r\n return {\r\n ...get,\r\n loading: () => get.status === 'ready' || get.status === 'pending'\r\n }\r\n}\r\n\r\n//https://medium.com/@jaryd_34198/seamless-api-requests-with-react-hooks-part-2-3ab42ba6ad5c","import React from 'react';\r\nimport env from '../../env';\r\n\r\nexport function MediaQueryStatus(props) {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet-async';\r\n\r\nexport function MetaTag({ data: seoData }) {\r\n //console.log(seoData)\r\n const data = Object.assign({}, {\r\n title: ''\r\n }, seoData)\r\n\r\n return (<>\r\n \r\n {data.title}\r\n {data.description && }\r\n {data.keywords && }\r\n {data.language && }\r\n {data.country && }\r\n {\r\n (data.faceBookDomainVerifi && data.faceBookDomainVerifi !== '') &&\r\n \r\n }\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n\r\n \r\n\r\n {(data.alternates || []).map((x, index) => )}\r\n\r\n \r\n )\r\n}\r\n\r\n\r\n// function MetaContent({ name, content }) {\r\n// console.log(name, content)\r\n// if (!content) return null;\r\n// return \r\n// }\r\n\r\n","import env from '../../env';\r\n\r\nexport const pageView = (url) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmPageView(url)\r\n if (hasGtag()) gaPageView(url)\r\n if (hasFBPixel()) fbPageView(url)\r\n}\r\n\r\nexport const sendFormEvent = (formName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n const p = Object.assign({ 'gtm.elementId': formName }, params || {})\r\n\r\n if (hasGTM()) gtmSendEvent('form', p)\r\n if (hasGtag()) gaSendEvent('form', p)\r\n if (hasFBPixel()) fbSendEvent('form', p)\r\n}\r\n\r\nexport const sendEvent = (eventName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmSendEvent(eventName, params)\r\n if (hasGtag()) gaSendEvent(eventName, params)\r\n if (hasFBPixel()) fbSendEvent(eventName, params)\r\n}\r\n\r\n//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const gtmPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: {\r\n path: url\r\n }\r\n })\r\n }\r\n}\r\nexport const gtmSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Gtag / GA\r\nexport const hasGtag = () => {\r\n return !!(typeof window !== `undefined` && window.gtag);\r\n}\r\n\r\nexport const gaPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts) {\r\n env.gaAccounts.forEach(id => {\r\n window.gtag('config', id, { 'page_path': url });\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport const gaSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts && env.gaAccounts.length > 0) {\r\n window.gtag('event', eventName, params || {});\r\n }\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Facebook Pixel\r\nexport const hasFBPixel = () => {\r\n return !!(typeof window !== `undefined` && window.fbq);\r\n}\r\n\r\nexport const fbPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', 'PageView');\r\n }\r\n}\r\n\r\nexport const fbSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', eventName, params || {});\r\n }\r\n}\r\n//#endregion\r\n\r\n\r\n\r\n","import utils from '../../utils';\r\n\r\nexport const MAX = 100000;\r\nexport const MIN = -100000;\r\n\r\nexport function getScrollProgress(el) {\r\n if (typeof window !== `undefined`) {\r\n const scroll = window.scrollY || window.pageYOffset\r\n if (!el) {\r\n console.log('not exists', el)\r\n return {\r\n progress: 0,\r\n top: scroll\r\n }\r\n }\r\n const boundsTop = el.getBoundingClientRect().top + scroll\r\n\r\n const viewport = {\r\n top: scroll,\r\n bottom: scroll + window.innerHeight,\r\n height: window.innerHeight\r\n }\r\n\r\n const bounds = {\r\n top: boundsTop,\r\n bottom: boundsTop + el.clientHeight,\r\n height: el.clientHeight\r\n }\r\n\r\n //const scrollTop = window.scrollY || window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n // const status = {\r\n // viewport: viewport,\r\n // bound: bounds,\r\n // inViewport: (bounds.bottom >= viewport.top && bounds.bottom <= viewport.bottom)\r\n // || (bounds.top <= viewport.bottom && bounds.top >= viewport.top)\r\n // }\r\n\r\n //console.log((viewport.bottom - bounds.top) / (bounds.height + viewport.height))\r\n return {\r\n progress: (viewport.bottom - bounds.top) / (bounds.height + viewport.height),\r\n top: (viewport.bottom - bounds.top) / (viewport.height)\r\n }\r\n } else {\r\n return {\r\n progress: 0,\r\n top: 0\r\n }\r\n }\r\n}\r\n\r\n//au.setClass(section, 'animated', pr, [0.3, au.MAX])\r\nexport function setClass(el, className, pr, range)\r\n{\r\n if (pr >= range[0] && pr <= range[1]) {\r\n utils.css.addClass(el, className);\r\n } else {\r\n utils.css.removeClass(el, className);\r\n }\r\n}\r\n\r\nexport function prVal(min, max, pr, range = [0, 1]) {\r\n //console.log(min, max, typeof min, typeof to)\r\n if (pr < range[0]) return min;\r\n if (pr > range[1]) return max;\r\n return min + (max - min) * ((pr - range[0])/(range[1] - range[0]));\r\n}\r\n\r\nexport function transform(el, x, y) {\r\n el.style.transform = 'translate(' + x + ',' + y + ')';\r\n}\r\n\r\nexport function removeTransform(el) {\r\n\r\n}\r\n\r\n// requestAnimationFrame\r\n// const raf =\r\n// (window).requestAnimationFrame ||\r\n// (window).webkitRequestAnimationFrame ||\r\n// (window).mozRequestAnimationFrame ||\r\n// function (callback) {\r\n// (window).setTimeout(callback, 1000 / 60)\r\n// }\r\nexport function getScreenSize() {\r\n const w = utils.css.screenWidth()\r\n const h = utils.css.screenHeight()\r\n return { width: w, height: h };\r\n}\r\n","import React from 'react';\r\nimport { loadJs } from '../../lib/net-loader';\r\n\r\nexport function useInstagram() {\r\n const [embedStatus, setEmbedStatus] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n loadEmbedJs()\r\n })\r\n\r\n function loadEmbedJs() {\r\n if (typeof window !== `undefined`) {\r\n //console.log('instgrm effect', embedStatus, window.instgrm);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n }\r\n else if (!embedStatus && embedStatus !== 'loading') {\r\n setEmbedStatus('loading');\r\n loadJs(\"https://www.instagram.com/embed.js\").then(data => {\r\n //console.log('instgrm loaded', data);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n setEmbedStatus('loaded');\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return { loadEmbedJs: loadEmbedJs }\r\n}","import { useLayoutEffect } from 'react';\r\n//import useWindowScroll from '@react-hook/window-scroll';\r\nimport { au } from '../../components';\r\n\r\n/* background image height =\r\n + cutoff padding = always hidden padding - usually 10 px\r\n + panel height (desired parallax panel height)\r\n + padding height = panel height * padding height ratio\r\n + cutoff padding = always hidden padding - usually 10 px\r\n*/\r\n\r\nconst defaultSettings = {\r\n cutoffPadding: 10,\r\n speed: 15, // 5% of image/100px scroll\r\n //paddingHeightRatio: 0.3\r\n //screenSize\r\n}\r\n\r\nexport const ParallaxData = {\r\n settings: {\r\n screenSize: null\r\n },\r\n panels: [\r\n { selector: '.parallax', imageRatio: 1080 / 1920, panelHeight: 'auto' },\r\n ],\r\n elements: [],\r\n timeoutId: null\r\n}\r\n\r\nexport function useParallax() {\r\n const handleScroll = () => {\r\n //console.log('useParallax - scrolling')\r\n onScroll(ParallaxData);\r\n }\r\n\r\n const reset = () => {\r\n //console.log('useParallax - reset');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n }\r\n\r\n useLayoutEffect(() => {\r\n //console.log('useParallax - effect');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n if (typeof window !== `undefined`) {\r\n window.addEventListener('scroll', handleScroll)\r\n window.addEventListener('resize', reset)\r\n }\r\n return () => {\r\n //console.log('useParallax - removed');\r\n if (typeof window !== `undefined`) {\r\n window.removeEventListener('scroll', handleScroll)\r\n window.removeEventListener('resize', reset)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n return { reset };\r\n};\r\n\r\n// export function useParallax(opt) {\r\n// // const settings = Object.assign({}, defaultSettings, opt);\r\n\r\n// const [resetCounter, setResetCounter] = useState(0);\r\n// const [parallaxData,] = useState(ParallaxData);\r\n\r\n// //const scrollY = useWindowScroll(60 /*fps*/)\r\n// const reset = () => {\r\n// setResetCounter(resetCounter + 1);\r\n// }\r\n\r\n// const handleScroll = () => {\r\n// onScroll(parallaxData);\r\n// }\r\n\r\n// useLayoutEffect(() => {\r\n// console.log('useParallax - effect');\r\n\r\n// setTimeout(() => { init(parallaxData); handleScroll(); }, 300)\r\n\r\n// //const handleScroll = (): void => setThrottledScroll(getScrollY())\r\n// window.addEventListener('scroll', handleScroll)\r\n// window.addEventListener('resize', handleScroll)\r\n// return (): void => {\r\n// window.removeEventListener('scroll', handleScroll)\r\n// window.removeEventListener('resize', handleScroll)\r\n// }\r\n\r\n// // eslint-disable-next-line \r\n// }, [resetCounter]);\r\n// //console.log(scrollY, resetCounter)\r\n\r\n// return { reset };\r\n// };\r\n\r\nexport function init(data) {\r\n //console.log('parallax init');\r\n const screenSize = data.settings.screenSize = au.getScreenSize();\r\n data.settings = Object.assign({}, defaultSettings, data.settings)\r\n let cnt = 0;\r\n data.panels.forEach(panel => {\r\n const elements = document.querySelectorAll(panel.selector) || [];\r\n for (let i = 0; i < elements.length; i++) {\r\n cnt++;\r\n const el = elements[i];\r\n //const el = document.querySelector(panel.selector);\r\n //console.log(panel.selector, el)\r\n //if (!el) { panel.el = null; return; }\r\n const autoPanelHeight = !panel.panelHeight || panel.panelHeight === 'auto';\r\n const panelHeight = autoPanelHeight ? el.offsetHeight : parseFloat(panel.panelHeight);\r\n //console.log(autoPanelHeight, panelHeight)\r\n\r\n const calculated = { shadowHeight: 0, shadowWidth: 0, fromTop: 0, toTop: 0 };\r\n // calculated.shadowHeight = panelHeight * (1 + data.settings.paddingHeightRatio) + 2 * data.settings.cutoffPadding;\r\n // calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n // if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // // magnifying the background image to fix the full width of the browser\r\n // calculated.shadowWidth = data.settings.screenSize.width;\r\n // calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n // }\r\n\r\n const speed = data.settings.speed * (screenSize.width > 1000 ? 1 : 2) \r\n let baseHeight = data.settings.screenSize.width * panel.imageRatio > panelHeight ? data.settings.screenSize.width * panel.imageRatio : panelHeight\r\n baseHeight = baseHeight + (data.settings.screenSize.height + panelHeight) * (speed * 0.01)\r\n calculated.shadowHeight = baseHeight + 2 * data.settings.cutoffPadding;\r\n calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // magnifying the background image to fix the full width of the browser\r\n calculated.shadowWidth = data.settings.screenSize.width;\r\n calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n }\r\n\r\n calculated.fromTop = -data.settings.cutoffPadding;\r\n calculated.toTop = -calculated.shadowHeight + panelHeight + data.settings.cutoffPadding;\r\n\r\n if (!autoPanelHeight)\r\n (el).style.height = panel.panelHeight + 'px';\r\n\r\n (el).style.backgroundSize = calculated.shadowWidth + 'px ' + calculated.shadowHeight + 'px'\r\n\r\n //panel.el = el;\r\n panel.calculated = calculated;\r\n data.elements.push({ el: el, calculated: calculated });\r\n //console.log(panelHeight, baseHeight, calculated)\r\n }\r\n })\r\n\r\n //console.log('parallax init - ' + cnt)\r\n if (cnt === 0) {\r\n if (data.timeoutId) {\r\n try {\r\n if (typeof window !== `undefined`) { \r\n window.clearTimeout(data.timeoutId)\r\n }\r\n } catch(e){}\r\n }\r\n // reschedule\r\n if (typeof window !== `undefined`) { \r\n data.timeoutId = window.setTimeout(() => init(data), 500)\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function onScroll(data) {\r\n //console.log(data);\r\n data.elements.forEach(element => {\r\n if (!element.el) return;\r\n const pr = au.getScrollProgress(element.el).progress;\r\n //console.log(pr);\r\n\r\n const min = element.calculated.fromTop;\r\n const max = element.calculated.toTop;\r\n const top = au.prVal(min, max, pr, [0, 1]);\r\n //console.log(top);\r\n (element.el).style.backgroundPositionY = top + 'px'\r\n })\r\n\r\n}","import { useMemo } from 'react';\r\nimport { useParams, useLocation, useHistory, useRouteMatch, Redirect } from 'react-router-dom';\r\nimport queryString from 'query-string';\r\n\r\nexport function useRouter() {\r\n const params = useParams();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const match = useRouteMatch();\r\n\r\n // Return our custom router object\r\n // Memoize so that a new object is only returned if something changes\r\n return useMemo(() => {\r\n return {\r\n // For convenience add push(), replace(), pathname at top level\r\n navigate: history.push,\r\n push: history.push,\r\n Redirect: Redirect,\r\n replace: history.replace,\r\n pathname: location.pathname,\r\n path: location.pathname + location.hash + location.search,\r\n // Merge params and parsed query string into single \"query\" object\r\n // so that they can be used interchangeably.\r\n // Example: /:topic?sort=popular -> { topic: \"react\", sort: \"popular\" }\r\n query: {\r\n ...queryString.parse(location.search), // Convert string to object\r\n ...params\r\n },\r\n // Include match, location, history objects so we have\r\n // access to extra React Router functionality if needed.\r\n match,\r\n location,\r\n history\r\n };\r\n }, [params, match, location, history]);\r\n}","import { useState } from 'react';\r\n\r\nexport function useHistory(currentPath) {\r\n const initHistory = currentPath ? [ historyItem(currentPath) ] : [];\r\n const [history, setHistory] = useState(initHistory);\r\n\r\n // useEffect(() => {\r\n // console.log('use history')\r\n // });\r\n\r\n const push = (url) => {\r\n// console.log(url)\r\n const nav = historyItem(url);\r\n \r\n const same = history.length > 0 \r\n && (JSON.stringify(history[history.length - 1]) === JSON.stringify(nav))\r\n // console.log(same, history)\r\n if (!same) {\r\n setHistory([...history, nav]);\r\n }\r\n }\r\n\r\n const getLast = () => {\r\n if (history.length === 0) return null;\r\n return history[history.length - 1];\r\n }\r\n\r\n const getPreviousPath = () => {\r\n //console.log(history)\r\n if (history.length < 2) return null;\r\n return history[history.length - 2].url;\r\n }\r\n\r\n const getPrevious = () => {\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, getLast, getPrevious, getPreviousPath };\r\n};\r\n\r\nfunction historyItem(url) {\r\n return { url: url};\r\n}","import { useStore } from '../../store';\r\n\r\n// loc data: {path:'', title:''}\r\nexport function useHistoryStore() {\r\n const { state, dispatch } = useStore();\r\n const history = state.history || [];\r\n\r\n function push(loc) {\r\n const same = history.length > 0 \r\n && (JSON.stringify(history[history.length - 1]) === JSON.stringify(loc))\r\n if (!same) {\r\n // console.log(JSON.stringify(history[history.length - 1]), JSON.stringify(loc))\r\n setHistory([...history, loc]);\r\n }\r\n }\r\n\r\n function setHistory(history){\r\n // console.log('history set', history)\r\n dispatch({ type: 'SET_HISTORY', payload: history })\r\n }\r\n\r\n const last = () => {\r\n // console.log('last history', history)\r\n if (history.length < 2) return null;\r\n return history[history.length - 2].path;\r\n }\r\n\r\n const pop = () => {\r\n if (history.length === 0) return null;\r\n history.pop(); // remove the current first\r\n const item = history.pop();\r\n return item;\r\n }\r\n\r\n return { history, push, pop, last };\r\n};","import utils from '../../utils';\r\n\r\nexport function handleElementLink(el, externalHandler) {\r\n // externalHandler = (url) => {\r\n // if (typeof window !== `undefined`) window.location.href = url;\r\n // }\r\n\r\n const link = utils.url.getLinkFromElement(el);\r\n const linkInfo = utils.url.getLinkInfo(link);\r\n //console.log(link, linkInfo)\r\n if (!linkInfo) return { handled: false, linkInfo: linkInfo };\r\n\r\n if (linkInfo.type === 'hash') {\r\n utils.ui.scrollTo(linkInfo.url);\r\n } else if (linkInfo.type === 'tel' || linkInfo.type === 'mailto') {\r\n\r\n } else if (linkInfo.type === 'external' && externalHandler) {\r\n // let the external handler process.\r\n externalHandler(linkInfo.url);\r\n return { handled: true, linkInfo: linkInfo };;\r\n }\r\n return { handled: false, linkInfo: linkInfo };\r\n}","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport utils from \"../../utils\";\r\nimport { handleElementLink } from \"./handleLink\";\r\n\r\nexport function SiteLink(props) {\r\n const { children, to, target, onClick, ...other } = props;\r\n\r\n function goToLink(e) {\r\n try {\r\n const isCmsEdit = document.querySelector(\"body\").classList.contains(\"cmsedit\");\r\n if (isCmsEdit) {\r\n e.preventDefault();\r\n return;\r\n }\r\n } catch (e) {}\r\n\r\n //console.log(e, e.target);\r\n if (onClick) onClick(e);\r\n const processed = handleElementLink(e.target);\r\n //console.log(processed)\r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n return utils.url.isExternalLink(to) ? (\r\n goToLink(e)} {...other}>\r\n {children}\r\n \r\n ) : (\r\n goToLink(e)} {...other}>\r\n {children}\r\n \r\n );\r\n}\r\n","import { css } from '@emotion/core'\r\nimport { mixin, mq } from '../../cssInJs'\r\n\r\nexport default {\r\n tiles: css(mq({\r\n marginLeft: [0, -5, null, -10],\r\n marginRight: [0, -5, null, -10],\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexWrap: 'wrap'\r\n })),\r\n tile: css(mq({\r\n flexBasis: ['50%', '33.33%', '25%', '25%', '20%', '16.66%'],\r\n padding: [0, 5, null, 10],\r\n cursor: 'pointer'\r\n })),\r\n tileImage: css({\r\n position: 'relative',\r\n display: 'block',\r\n ':after': { ...mixin.overlay() },\r\n ':hover, :focus': {\r\n ':after': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n }\r\n }\r\n }),\r\n tileIcon: css({\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n fontSize: 30,\r\n color: 'white',\r\n zIndex: 1\r\n })\r\n}","import React from 'react';\r\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","import React from 'react';\r\nimport utils from '../../utils';\r\nimport * as yt from './iframeApi';\r\n\r\nexport function YoutubeEmbed({ url, title }) {\r\n const videoId = yt.getYoutubeCode(url);\r\n //const posterImageUrl = yt.thumbnailMax(videoId);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 1,\r\n 'loop': 0,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","\n// common section or pages\nexport { NotFound } from './notFound/notFound';\nexport { AppVersion, AppVersionPage } from '../lib/app-version/app-version-v2';\nexport { Button } from './form/buttons/button';\nexport { ErrorMessage, ErrorPopup } from '../lib/ui-error';\nexport { Loading } from '../lib/ui-loading';\n\n// common functions\nexport { usePost, useGet } from '../lib/net-api';\nexport { MediaQueryStatus } from '../lib/dev-mediaQueryStatus';\nexport { MetaTag } from '../lib/seo';\n\nexport { au } from '../lib/animation';\nexport { useInstagram } from '../lib/instagram-useInstagram';\nexport { useParallax } from '../lib/ui-parallax';\nexport { useRouter, useHistory, useHistoryStore, handleElementLink, SiteLink } from '../lib/router'\n\n\n// modules\nexport { InstagramFeed } from '../lib/instagram-feed';\n\nexport { YoutubeBanner, YoutubeEmbed, YoutubeEmbedPopup } from '../lib/youtube';","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 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 }, ...controlOptions};\r\n}\r\n\r\nexport default { group, array }","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Email(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n // only validate for blur keydown tab\r\n if (e && e.type === 'change') return null;\r\n return !isEmpty(control.value) && !isValidEmail(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid email.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidEmail = mail => {\r\n const regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(mail);\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\nimport utils from '../../../utils';\r\n\r\nexport function ValidateDate(message = null, opt = null) {\r\n return createValidator('date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isDate(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDate(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDateNullAllowed(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return control.value && !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nfunction isDate(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n return !!date;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isPast(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n //console.log(date, typeof date)\r\n if (date) {\r\n const now = new Date();\r\n return date.getTime() < now.getTime();\r\n }\r\n }\r\n return false;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Length(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt, validator) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isValidLength(control.value, validator) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid length.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidLength = (text, validator) => {\r\n const length = (text || '').length;\r\n if (validator.min && length < validator.min) return false;\r\n if (validator.max && length > validator.max) return false;\r\n return true;\r\n}\r\n","import { Required } from './validators/required';\r\nimport { Email } from './validators/email';\r\nimport { ValidateDate, PastDate, PastDateNullAllowed } from './validators/date';\r\nimport { Length } from './validators/length';\r\n\r\nconst validateControl = (control, e, validateOpt) => {\r\n const errors = [];\r\n const validators = control.validators || [];\r\n for (let i = 0; i < validators.length; i++) {\r\n const validator = validators[i];\r\n if (!validator.disabled) {\r\n const error = validator.validate && validator.validate(control, e, validateOpt, validator);\r\n if (error) {\r\n errors.push(error);\r\n //console.log(error, control, validator, e)\r\n\r\n if (!validator.continueToValidate) break;\r\n }\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n};\r\n\r\nexport default {\r\n Required,\r\n Email,\r\n Date: ValidateDate,\r\n PastDate,\r\n PastDateNullAllowed,\r\n Length,\r\n validateControl,\r\n};\r\n","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = 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={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, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs} />\r\n \r\n {\r\n (option.helpText && option.helpText !== '') &&\r\n \r\n }\r\n
)}\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(value, optionValue) {\r\n if (optionValue === null || typeof optionValue === 'undefined') return false;\r\n return value === optionValue;\r\n}\r\n\r\nexport default RadioListInput;","import React from \"react\";\r\nimport ValidationAlert from \"../components/ValidationAlert\";\r\nimport utils from \"../../../utils\";\r\nimport { getLabel, getLabelAsString } from \"../formRenderHelper\";\r\n\r\nfunction TextareaInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const { usePlaceholder = false } = formOption;\r\n const placeHolder = usePlaceholder\r\n ? getLabelAsString(control, formOption)\r\n : null;\r\n const valueStr = value === 0 ? 0 : value || \"\";\r\n\r\n const textAreaRef = React.useRef(null);\r\n const [textAreaHeight, setTextAreaHeight] = React.useState(\"auto\");\r\n const [parentHeight, setParentHeight] = React.useState(\"auto\");\r\n\r\n React.useEffect(() => {\r\n const disableAutoHeight = (style && style.disableAutoHeight) || false;\r\n if (!disableAutoHeight) {\r\n if (textAreaRef.current) {\r\n const h =\r\n textAreaRef.current.scrollHeight > 60\r\n ? textAreaRef.current.scrollHeight\r\n : 60;\r\n setParentHeight(`${h}px`);\r\n setTextAreaHeight(`${h}px`);\r\n }\r\n }\r\n }, [valueStr, style]);\r\n\r\n function onChangeInternal(e) {\r\n const disableAutoHeight = (style && style.disableAutoHeight) || false;\r\n if (!disableAutoHeight) {\r\n setTextAreaHeight(\"auto\");\r\n if (textAreaRef.current) {\r\n const h =\r\n textAreaRef.current.scrollHeight > 60\r\n ? textAreaRef.current.scrollHeight\r\n : 60;\r\n setParentHeight(`${h}px`);\r\n }\r\n }\r\n handleChange(e, control);\r\n }\r\n\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && (\r\n \r\n )}\r\n
\r\n 0 ? \" is-invalid\" : \"\")\r\n }\r\n {...attrs}\r\n >\r\n
\r\n {helpText && (\r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default TextareaInput;\r\n","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nconst CheckboxListInput = ({ control, handleChange, formOption }) => {\r\n const { name, label, value, errors, style, options, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n const values = value ? [...value] : [];\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs}/>\r\n \r\n
)}\r\n\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(values, value) {\r\n if (value === null || typeof value === 'undefined') return false;\r\n return values.includes(value);\r\n}\r\n\r\nexport default CheckboxListInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction DateSeparateInput({ control, handleChange, formOption }) {\r\n //const { name, label, value, errors, style } = control;\r\n const { name, label, errors, style, helpText, attrs } = control;\r\n const thisYear = (new Date()).getFullYear();\r\n //console.log(name, value)\r\n const [year, setYear] = React.useState('')\r\n const [month, setMonth] = React.useState('')\r\n const [day, setDay] = React.useState('')\r\n\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, name + '|'+ fieldLabel)\r\n //const placeHolder = usePlaceholder ? fieldLabel : null;\r\n // let valueStr = value === 0 ? 0 : (value || \"\");\r\n // if (type === 'date' && value) {\r\n // valueStr = utils.date.formatYYYYMMDD(value);\r\n // }\r\n\r\n function handleChangeDay(e) {\r\n setDay(e.target.value)\r\n handleChangeInner(year, month, e.target.value)\r\n }\r\n\r\n function handleChangeMonth(e) {\r\n setMonth(e.target.value)\r\n handleChangeInner(year, e.target.value, day)\r\n }\r\n\r\n function handleChangeYear(e) {\r\n setYear(e.target.value)\r\n handleChangeInner(e.target.value, month, day)\r\n }\r\n\r\n function handleChangeInner(yyyy, mm, dd) {\r\n control.incomplete = !(yyyy !== '' && mm !== '' && dd !== '')\r\n const newVal = yyyy + '-' + mm + '-' + dd;\r\n //console.log(newVal)\r\n //mimic event\r\n handleChange({\r\n persist: () => { },\r\n target: { name: name, value: newVal, checked: false }\r\n }, control)\r\n }\r\n\r\n //const monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\r\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n const selectStyle = { width: 'auto', display: 'inline-block', marginRight: '0.5em' };\r\n\r\n const fromYear = style && style.recentYear ? thisYear : thisYear - 10;\r\n const recentYear = style && style.recentYear ? style.recentYear : 100;\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n \r\n \r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DateSeparateInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction FileInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, control)\r\n const placeHolder = usePlaceholder ? fieldLabel : null;\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n if (type === 'date' && value) {\r\n valueStr = utils.date.formatYYYYMMDD(value);\r\n }\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n handleChange(e, control)} onBlur={(e) => handleChange(e, control)}\r\n placeholder={placeHolder}\r\n className={\"form-control-file\" + (errors && errors.length > 0 ? ' is-invalid' : '')} {...attrs}/>\r\n
\r\n \r\n
\r\n { valueStr === '' ? 'No File Chosen' : valueStr.replace(/^.*\\\\/, \"\")}\r\n
\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default FileInput;","import TextInput from './TextInput';\r\nimport RadioListInput from './RadioListInput';\r\nimport TextareaInput from './TextareaInput';\r\nimport CheckboxInput from './CheckboxInput';\r\nimport CheckboxListInput from './CheckboxListInput';\r\nimport SelectInput from './SelectInput';\r\nimport HiddenInput from './HiddenInput';\r\n//import HtmlInput from './HtmlInput';\r\nimport DateSeparateInput from './DateSeparateInput';\r\nimport FileInput from './FileInput';\r\n\r\nconst Components = { TextInput, RadioListInput, TextareaInput, CheckboxInput, CheckboxListInput, SelectInput, HiddenInput, DateSeparateInput, FileInput };\r\n\r\nconst capitalize = expression => expression.charAt(0).toUpperCase() + expression.slice(1);\r\n\r\nexport function getControl(control, formOption) {\r\n let Component = null;\r\n if (control.type === 'number' || control.type === 'email' || control.type === 'date' || control.type === 'password' || control.type === 'tel')\r\n Component = TextInput;\r\n else if (control.type === \"dob\")\r\n Component = DateSeparateInput;\r\n else\r\n Component = Components[capitalize(control.type || '') + 'Input'];\r\n\r\n return Component;\r\n}\r\n\r\n","import React from \"react\";\r\nimport ValidationAlert from \"../components/ValidationAlert\";\r\nimport utils from \"../../../utils\";\r\nimport { getLabel } from \"../formRenderHelper\";\r\nimport { SiteLink } from \"../../../components\";\r\n\r\nconst CheckboxInput = ({ control, handleChange, formOption }) => {\r\n const {\r\n name,\r\n label,\r\n type,\r\n value,\r\n errors,\r\n style,\r\n helpText,\r\n attrs,\r\n link,\r\n linkText,\r\n } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n return (\r\n
\r\n handleChange(e, control)}\r\n className={\"form-check-input\"}\r\n {...attrs}\r\n />\r\n \r\n\r\n {helpText && (\r\n
\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckboxInput;\r\n","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction SelectInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, options, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(value, typeof value)\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n \r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SelectInput;\r\n\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 }, ...option\r\n };\r\n\r\n const handleChange = (e, controlFromEvent) => {\r\n e.persist();\r\n const control = 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) => 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) => controlRenderer.renderControl(formRoot || formModel, name, handleChange, formOption);\r\n const renderControlDirect = (control) => controlRenderer.renderControlDirect(control, handleChange, formOption);\r\n\r\n const getValue = (formRoot) => formModelHelper.getValue(formRoot || formModel);\r\n\r\n const getFiles = (formRoot) => 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 }\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(x => x.value)\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 };","import fb from './formBuilder';\r\nimport validators from './validators';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport * as formRenderHelper from './formRenderHelper';\r\nimport * as validatorHelper from './validatorHelper';\r\n\r\nexport { useForm } from './useForm';\r\nexport { useStep } from './useStep';\r\nexport { fb, validators, validatorHelper, formModelHelper, formRenderHelper }","const initialState = {\r\n page: null,\r\n menu: null,\r\n popup: null,\r\n history: null\r\n};\r\n\r\nconst reducer = (state = initialState, action) => {\r\n //console.log('reducer', action)\r\n switch (action.type) {\r\n case 'SET_PAGE':\r\n return {\r\n ...state,\r\n page: action.payload\r\n };\r\n case 'SET_MENU':\r\n return {\r\n ...state,\r\n menu: action.payload\r\n };\r\n case 'SET_POPUP':\r\n return {\r\n ...state,\r\n popup: action.payload\r\n };\r\n case 'SET_HISTORY':\r\n return {\r\n ...state,\r\n history: action.payload\r\n };\r\n case 'SET_STATE':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n throw new Error(\"Unexpected action\");\r\n }\r\n};\r\n\r\nexport { initialState, reducer };","import React, { createContext, useReducer, useContext, useEffect } from 'react';\r\nimport { initialState, reducer } from '../../store';\r\n\r\nconst StoreContext = createContext(initialState);\r\n\r\nconst StoreProvider = ({ children }) => {\r\n // Get state and dispatch from Reacts new API useReducer. \r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n //console.log('StoreProvider')\r\n // Log new state\r\n useEffect(() => {\r\n //console.log('-- new state', state);\r\n //console.trace();\r\n }, [state]);\r\n // Render state, dispatch and special case actions\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport { StoreContext, StoreProvider };\r\n\r\nexport const useStore = () => useContext(StoreContext);","export { initialState, reducer } from '../lib/store/reducers';\nexport { StoreContext, StoreProvider, useStore } from '../lib/store';","// 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 utils from '../../utils';\r\n\r\nexport function loadApi(onApiReady) {\r\n if (typeof window !== `undefined` && !window.YT) { // If not, load the script asynchronously\r\n const tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n\r\n // onYouTubeIframeAPIReady will load the video after the script is loaded\r\n window.onYouTubeIframeAPIReady = () => onApiReady(true);\r\n\r\n const firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n } else { // If script is already there, load the video directly\r\n onApiReady(false);\r\n }\r\n}\r\n\r\n// export function player(playerId, videoId, playerVars = {}, events = {}) {\r\n// //let player = null;\r\n// const defaultPlayerVars = {\r\n// 'autoplay': 1,\r\n// 'controls': 0,\r\n// 'loop': 1,\r\n// 'showinfo': 0,\r\n// 'rel': 0,\r\n// 'modestbranding': 1,\r\n// 'origin': window.location.origin,\r\n// 'allowfullscreen': true,\r\n// 'wmode': 'transparent'\r\n// }\r\n// const defaultEvents = {\r\n// 'onStateChange': (e) => { },\r\n// 'onReady': (e) => { console.log('onReady'); player.mute() },\r\n// 'onError': (e) => { console.log(e) }\r\n// }\r\n\r\n// const player = new window.YT.Player(playerId, {\r\n// videoId: videoId,\r\n// playerVars: Object.assign({}, defaultPlayerVars, playerVars),\r\n// events: Object.assign({}, defaultEvents, events),\r\n// });\r\n// return player;\r\n// }\r\n\r\nexport function thumbnailMax(videoId){\r\n return `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`\r\n}\r\n\r\n// onPlayerStateChange(event){\r\n// switch (event.data){\r\n// case window['YT'].PlayerState.PLAYING:\r\n// //console.log('Playing');\r\n// //this.player.mute();\r\n// break;\r\n// case window['YT'].PlayerState.PAUSED:\r\n// //console.log('Pafdsu');\r\n// break;\r\n// case window['YT'].PlayerState.ENDED:\r\n// //console.log('ended ');\r\n// //this.player.playVideo();\r\n// this.player.stopVideo();\r\n// break;\r\n// }\r\n// }\r\n\r\n// toggleBannerYoutueInCMS(toggleItem:string){ \r\n// if(toggleItem == 'youtube'){\r\n// //location.reload();\r\n// this.toggleBannerOrYoutube = toggleItem;\r\n// this.player.playVideo();\r\n// this.init();\r\n// }\r\n// else{\r\n// this.toggleBannerOrYoutube = toggleItem;\r\n// this.player.stopVideo();\r\n// }\r\n// }\r\n\r\n\r\nexport function getYoutubeCode(src) {\r\n // if (src.indexOf('http') >= 0) {\r\n // if (src.indexOf('v=') >= 0) {\r\n // return src.split('v=')[1];\r\n // }\r\n // }\r\n // return src;\r\n return utils.url.getYoutubeId(src);\r\n}","function payload(item, key, defaultVal = '') {\n const found = item.payloads.find(x => x.key === key);\n return found ? found.value : defaultVal;\n}\n\nexport default { payload };","import React from 'react';\nimport { Item } from '../../items/item';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport Slider from \"react-slick\";\n\nexport function BannerPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n\n const slides = subItems.map((subItem, index) =>\n \n );\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: true,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1\n };\n\n const cssClass = utils.classNames('cms_item', 'bannerPanel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\n\n return (\n
\n \n {slides}\n \n
\n );\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nexport function BannerItem(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n //console.log('item', linkUrl);\n const titlePanel = captionTitle ? (\n linkUrl ? (
\n
\n READ MORE\n
\n ) : (
)\n ) : null;\n\n const linkOverlay = linkUrl && !captionTitle ? (\n \n ) : null;\n\n const cssClass = utils.classNames('cms_item', 'banner-item', 'bannerSize', item.cssClass || item.anchorName || '', titlePanel && 'bannerHasTitlePanel');\n\n return (\n
\n {titlePanel &&
{titlePanel}
}\n {linkOverlay && linkOverlay}\n
\n );\n\n\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Item } from '../../items/item';\nimport utils from '../../../utils';\n\nexport function Panel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n \n const bgColor = cmsUtils.payload(item, 'BgColor');\n \n //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\n const bgTheme = (bgColor && bgColor !== '') ? 'white' : cmsUtils.payload(item, 'TextColorTheme') || 'white';\n //console.log(bgTheme)\n\n\n let bgUrl = null;\n if (imageUrl)\n bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\n\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '');\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n\n return (\n
\n
\n
\n {subItemsElts}\n
\n
\n );\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n\nexport function InstaEmbedByLink({ className, url }) {\n if (!url) return null;\n // https://www.instagram.com/p/B4zJYkxHRMu/?utm_source=ig_web_copy_link\n // https://www.instagram.com/reel/CdsPgIFDINY/\n\n const type = url.indexOf(\"/reel/\") > 0 ? \"reel\" : url.indexOf(\"/tv/\") > 0 ? \"tv\" : \"p\";\n let parts = url.split(`instagram.com/${type}/`);\n if (parts.length !== 2) return null;\n parts = parts[1].split(\"/\");\n if (parts.length === 0) return null;\n\n const instagramCode = parts[0];\n console.log(instagramCode);\n const template = `
`;\n\n return
;\n}\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport InnerHTML from \"dangerously-set-html-content\";\nimport { InstaEmbedByLink } from \"./instagram\";\n// import { loadScript } from \"../../lib/net-loader\";\nconst defaultHolder = typeof window !== `undefined` ? window : {};\nconst storeName = \"__j6_lazy_js\";\n\nexport function Embed({ code, type, classNames = [] }) {\n const { embedType, embedCode } = getEmbedType({ code, type });\n if (!embedCode) return null;\n classNames.push(\"embedCodes\");\n classNames.push(`embedCodes--${embedType}`);\n if (embedType === \"pinterest\") loadPinterestJs();\n if (embedType === \"instagramlink\") return ;\n else return ;\n}\n\nfunction loadPinterestJs() {\n if (typeof window !== `undefined`) {\n const recentlyAdded = parseInt(window[\"jsPinRecent\"]) || 0;\n const ts = ~~(new Date().getTime() / 500);\n // console.log(recentlyAdded, ts);\n if (recentlyAdded === ts) return;\n window[\"jsPinRecent\"] = ts;\n // console.log(\"loading..\");\n Object.keys(window)\n .filter((x) => x.indexOf(\"PIN_\") === 0)\n .forEach((x) => delete window[x]);\n\n loadJs([\"//assets.pinterest.com/js/pinit.js\"], true, [\"pinit.js\", \"pinit_main.js\"]).then((data) => {\n console.log(\"pinterest loaded\", data);\n });\n }\n}\n\nfunction loadJs(scripts, forceToReload, removingScripts) {\n const promises = [];\n scripts.forEach((script) => {\n return promises.push(loadScript(script, window, forceToReload, removingScripts));\n });\n return Promise.all(promises);\n}\n\n// var l = function (a, b, c) {\n// var d, e, f;\n// (d = \"PIN_\" + ~~(new Date().getTime() / 864e5)),\n// a[d]\n// ? (a[d] += 1)\n// : ((a[d] = 1),\n// a.setTimeout(function () {\n// (e = b.getElementsByTagName(\"SCRIPT\")[0]),\n// (f = b.createElement(\"SCRIPT\")),\n// (f.type = \"text/javascript\"),\n// (f.async = !0),\n// (f.src = c.mainUrl + \"?\" + Math.random()),\n// e.parentNode.insertBefore(f, e);\n// }, 10));\n// };\n\nfunction loadScript(url, holder_, forceToReload = false, removingScripts) {\n const holder = holder_ || defaultHolder;\n if (!holder[storeName]) holder[storeName] = {};\n\n return new Promise((resolve, reject) => {\n //resolve if already loaded\n if (!forceToReload && holder[storeName][url] && holder[storeName][url].loaded) {\n resolve({ script: url, loaded: true, networkLoaded: false, status: \"Already Loaded\" });\n } else {\n // remove previous\n const scripts = document.querySelectorAll(\"script[src]\");\n [...scripts].forEach((x) => {\n // console.log(x.src, url, removingScripts);\n if (\n x.src.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"//\", \"\") === url.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"//\", \"\") ||\n removingScripts.some((part) => x.src.indexOf(part) >= 0)\n ) {\n console.log(x);\n x.remove();\n }\n });\n\n // load script\n let script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = url;\n script.onload = () => {\n holder[storeName][url] = { loaded: true };\n resolve({ script: url, loaded: true, networkLoaded: true, status: \"Loaded\" });\n };\n script.onerror = (error) => resolve({ script: url, loaded: false, status: \"Load failed\" });\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n });\n}\n\nexport function getEmbedType({ code, type }) {\n const embedType = (type || \"auto\").toLowerCase();\n const embedCode = (code || \"\").trim();\n const linkOnly = embedCode.indexOf(\"http\") === 0;\n const hasScript = embedCode.indexOf(\"= 0;\n if (embedType !== \"instagramlink\") {\n if (embedCode.indexOf(\"instagram.com\") > 0 && linkOnly) return { embedType: \"instagramlink\", embedCode };\n else if (embedCode.indexOf(\"instagram.com\") > 0 && hasScript) return { embedType: \"instagram\", embedCode };\n else if (embedCode.indexOf(\"tiktok.com\") > 0) return { embedType: \"tiktok\", embedCode };\n else if (embedCode.indexOf(\"giphy.com\") > 0) return { embedType: \"giphy\", embedCode };\n else if (embedCode.indexOf(\"pinterest.com\") > 0) return { embedType: \"pinterest\", embedCode };\n }\n return { embedType, embedCode };\n}\n","import React, { useLayoutEffect, useRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\n\nimport { useRouter } from \"../../../components\";\n\nimport { handleElementLink } from \"../../../components\";\nimport env from \"../../../env\";\nimport { Embed } from \"../../../site/embed\";\n\n//import { Document, Page } from 'react-pdf'\n//import { Document, Page } from 'react-pdf/dist/entry.webpack';\n\nexport function Html(props) {\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const { history } = useRouter();\n //const [ pdfViewPath, setPdfViewPath ] = React.useState(null)\n //console.log('item', item, cmsOption);\n\n const year = new Date().getFullYear();\n let content = cmsOption.isCmsEdit\n ? cmsUtils.payload(item, \"Content\")\n : cmsUtils\n .payload(item, \"Content\")\n .replace(/__year__/g, year)\n .replace(\n \"__version__\",\n \" PWA \" + ver + \"\"\n );\n\n content = content\n .replace(/

 <\\/h2>/g, `

 

`)\n .replace(/wmode=transparent/g, \"wmode=transparent&rel=0\");\n\n content = content\n .replace(\n \"__wheretobuyau__\",\n `
\n \n
`\n )\n .replace(\n \"__wheretobuynz__\",\n `
\n \n
`\n )\n .replace(\n /class=\"aos_effect_up\"/gi,\n `class=\"aos_effect_up\" data-aos=\"fade-up\"`\n );\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"htmlPanel\",\n cmsOption.isCmsEdit && \"html\",\n item.cssClass || item.anchorName || \"\"\n );\n\n //let itemElt = (
);\n\n function handleClick(e) {\n let target = \"\";\n if (e.target.closest(\"a\")) {\n target = e.target.closest(\"a\").getAttribute(\"target\");\n }\n const processed =\n target === \"_blank\"\n ? handleElementLink(e.target, null)\n : handleElementLink(e.target);\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n\n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === \"internal\") {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url);\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n\n if (e.target.closest(\"a\")) {\n let href = e.target.closest(\"a\").getAttribute(\"href\") + \"\";\n if (href.indexOf(\"#\") !== -1) {\n let _href = href.split(\"#\");\n console.log(\"_href\", _href);\n let el = document.querySelector(\n 'section[data-cms-item-anchor=\"' + _href[1] + '\"]'\n );\n let anchorStatus = el.getAttribute(\"data-anchor-status\");\n if (anchorStatus === \"collapse\") {\n el.setAttribute(\"data-anchor-status\", \"expand\");\n el.classList.add(\"expand\");\n } else {\n el.setAttribute(\"data-anchor-status\", \"collapse\");\n el.classList.remove(\"expand\");\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n }\n //console.log(pdfViewPath)\n const pdfView =\n // pdfViewPath ?\n // :\n null;\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n //console.log(cmsOption.isCmsEdit)\n if (!cmsOption.isCmsEdit || cmsOption.cmsViewMode === \"viewonly\") {\n replaceEmbedCodes(htmlBlock.current, cmsOption);\n }\n\n const buttons = htmlBlock.current.querySelectorAll(\".button\");\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i]);\n }\n\n const iframes = htmlBlock.current.querySelectorAll(\"iframe\");\n for (let i = 0; iframes && i < iframes.length; i++) {\n resetYoutubeIframe(iframes[i]);\n }\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n }, [cmsOption]);\n\n return (\n <>\n handleClick(e)}\n >\n {pdfView}\n \n );\n}\n\nfunction restructureButton(el) {\n if (!el.querySelector(\"span\")) {\n const span = document.createElement(\"span\");\n span.innerHTML = el.innerHTML;\n el.innerHTML = \"\";\n el.appendChild(span);\n }\n}\n\nfunction resetYoutubeIframe(el) {\n if (el && el.parentElement) {\n if (\n !(\n el.parentElement.getAttribute(\"class\") &&\n el.parentElement.getAttribute(\"class\").indexOf(\"ytvideo\") >= 0\n )\n ) {\n const div = document.createElement(\"div\");\n div.setAttribute(\"class\", \"ytvideo\");\n el.parentElement.appendChild(div);\n div.appendChild(el);\n }\n }\n}\n\nfunction replaceEmbedCodes(block, cmsOption) {\n const embedDataList = cmsOption?.pageData?.embedDataList;\n const embedCodes = block.querySelectorAll(\"[data-embed-jaba]\");\n embedCodes.forEach((embed) => {\n const id = embed.getAttribute(\"data-embed-jaba\");\n const found = utils.array.find(embedDataList, (x) => x.id === id);\n if (found) {\n //console.log(found)\n // ReactDOM.render(
, embed);\n ReactDOM.render(, embed);\n }\n });\n //console.log(embedCodes, embedDataList)\n}\n","import React from 'react';\nimport { Item } from '../../items/item';\n\nexport function TestimonialPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n let itemElt = (
{item.itemTypeCode}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Item } from '../../items/item';\n\nexport function TestimonialItem(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n //const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const title = cmsUtils.payload(item, 'Title');\n //const desc = cmsUtils.payload(item, 'Desc');\n const bottomText = cmsUtils.payload(item, 'BottomText');\n //const ratingStar = cmsUtils.payload(item, 'RatingStar');\n //const alt = cmsUtils.payload(item, 'Alt');\n\n let itemElt = (
{item.itemTypeCode} {title} {bottomText}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n\n","import React from \"react\";\nimport cmsUtils from \"../../utils/cmsUtils\";\nimport utils from \"../../../utils\";\n\nexport function ImagePanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n //console.log(cmsOption)\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, \"HeightSet\") || \"standard\";\n const type = cmsUtils.payload(item, \"Type\") || \"normal\";\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"imagePanel\",\n type && type === \"type2\" ? \"parallax__type2\" : \"parallax\",\n `bannerSize--${heightSet}`,\n item.cssClass || item.anchorName || \"\"\n );\n\n const bgUrl =\n cmsOption.pageOptions && cmsOption.pageOptions.imagePath\n ? utils.site.resourcePath(cmsOption.pageOptions.imagePath)\n : utils.site.resourcePath(cmsUtils.payload(item, \"ImageUrl\"));\n\n const _mobileUrl = cmsUtils.payload(item, \"BottomImageUrl\") || \"\";\n const mobileUrl =\n _mobileUrl === \"\" ? \"\" : utils.site.resourcePath(_mobileUrl);\n\n const rightBg = utils.site.isMobile()\n ? mobileUrl === \"\"\n ? bgUrl\n : mobileUrl\n : bgUrl;\n \n //const rightBg = \"/assets/test.jpg\";\n\n const htmlBlock = React.useRef(null);\n const cssClass2 = utils.classNames(\n \"cms_item\",\n \"htmlPanel\",\n cmsOption.isCmsEdit && \"html\",\n item.cssClass || item.anchorName || \"\"\n );\n const content = cmsUtils.payload(item, \"Content\");\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nimport Slider from \"react-slick\";\n\nexport function PageTiles(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n const useSlider = cmsUtils.payload(item, 'UseSlider') === 'slider';\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\n //console.log(pages);\n const pageTileElts = pages.map((page, index) =>\n \n );\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n fade: false,\n autoplay: true,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n // You can unslick at a given breakpoint now by adding:\n // settings: \"unslick\"\n // instead of a settings object\n ]\n };\n\n const cssClass = utils.classNames('cms_item', 'pageTiles tiles', useSlider && 'useSlider', item.cssClass || item.anchorName || '');\n\n if (useSlider){\n return (\n
\n \n {pageTileElts}\n \n
\n );\n } else {\n return (\n
\n {pageTileElts}\n
\n ); \n }\n}\n\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 {page.pageTitle}\n
\n
\n {page.tileDesc || page.description}\n
\n
\n
\n
\n )\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nexport function SingleBanner(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const alignV = cmsUtils.payload(item, 'AlignV') || '50%';\n\n const cssClass = utils.classNames('cms_item', 'single-banner', 'banner-item', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n const _mobileUrl = cmsUtils.payload(item, 'BottomImageUrl') || \"\";\n const mobileUrl = _mobileUrl === '' ? '' : utils.site.resourcePath(_mobileUrl);\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n const rightBg = utils.site.isMobile() ? (mobileUrl === '' ? bgUrl : mobileUrl) : bgUrl;\n\n const titlePanel = captionTitle ? (\n linkUrl ? (\n
\n
) : (
)\n ) : null;\n\n return (\n
\n {titlePanel &&
{titlePanel}
}\n
\n );\n\n\n}\n","//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const pageView = (url, pageTitle = null) => {\r\n if (!hasGTM()) return;\r\n\r\n const pageOpt = pageTitle ? {\r\n path: url,\r\n title: pageTitle\r\n } : { path: url }\r\n //console.log(url, pageOpt)\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: pageOpt\r\n })\r\n}\r\n\r\n// \r\nexport const sendEvent = (eventName, params) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n}\r\n\r\nexport const sendGAEvent = (category, action, label, value) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: 'gaEvent' }, { category: category || '', action: action || '', label: label || '', value: value || '' }))\r\n}\r\n//#endregion\r\n\r\n\r\n","import React from 'react';\nimport env from '../../../env';\nimport { usePost } from '../../../components';\nimport { useForm } from '../../../form';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getContactModel } from './contactFormModel';\nimport { gtm } from '../../../lib/tracking';\n\nexport function Contact(props) {\n const emailReceiver = props.emailReceiver;\n const model = getContactModel({});\n const form = useForm(model, { usePlaceholder: true });\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), emailReceiver: emailReceiver };\n post.send(env.apiBase + \"/api/contact/send\", value);\n setSendingStatus('pending')\n })\n\n console.log('submitting')\n }\n\n // if (status === 'done') {\n // //navigate(`/task/view/${taskId}`)\n // window.location.reload();\n // }\n\n \n if (post.done() && sendingStatus === 'pending') {\n var value = form.getValue();\n gtm.sendEvent('contactFormSubmitted', {contactEmail: value.email} )\n form.reset(model)\n setSendingStatus(null)\n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('name')}
\n
{render('phone')}
\n
{render('email')}
\n
\n
\n
{render('modelNumber')}\n
\n This starts with 'VS' or 'CM' and ends with 'A' and can be found on the product packaging, instruction manual, or on the product itself.\n
\n
\n
\n
\n
{render('enquiry')}
\n
\n
\n
\n

By clicking 'Send Message' you accept the terms of our Privacy Policy.

\n
\n \n \n \n {post.done() && Successfully sent!}\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../../lib/form';\n\nexport function getContactModel(data) {\n const model = fb.group({\n modelNumber: [data.modelNumber || '', [], { label: 'Product Model Number', type: 'text' }],\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\n phone: [data.phone || '', [validators.Required()], { label: 'Phone', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\n enquiry: [data.enquiry || '', [validators.Required()], { label: 'Your Message', type: 'textarea' }]\n });\n \n return model;\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { Contact } from './contactForm';\n\nexport function ContactForm(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, cmsOption);\n\n const emailReceiver = cmsUtils.payload(item, 'EmailReceiver');\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n return (\n
\n\n
\n \n
\n\n
\n )\n}","import React, { useState, useRef } from \"react\";\r\nimport utils from \"../../utils\";\r\nimport { debounce } from \"../utils-core/debounce\";\r\nimport * as yt from \"./iframeApi\";\r\nimport { FiVolumeX, FiVolume2 } from \"react-icons/fi\";\r\nimport { FaRegPlayCircle } from \"react-icons/fa\";\r\nimport ModalVideo from \"react-modal-video\";\r\n\r\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 = () =>\r\n typeof window !== `undefined` && typeof props.canPlayVideo === `undefined`\r\n ? window.innerWidth >= 1200\r\n : !!(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`) window.addEventListener(\"resize\", resized);\r\n return () => {\r\n if (typeof window !== `undefined`) window.removeEventListener(\"resize\", resized);\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n function loadVideo() {\r\n if (youtubeBannerRef.current) setPlayerSize(getSize(youtubeBannerRef.current, props.sizeCalculator));\r\n if (canPlayVideo()) {\r\n yt.loadApi((loadJs) => {\r\n loadJs ? init() : setTimeout(init, 100);\r\n });\r\n }\r\n }\r\n\r\n function init() {\r\n let player = null;\r\n if (typeof window !== `undefined`) {\r\n player = new window.YT.Player(playerId, {\r\n events: {\r\n onStateChange: (e) => {\r\n switch (e.data) {\r\n // case window.YT.PlayerState.PLAYING:\r\n // break;\r\n // case window.YT.PlayerState.PAUSED:\r\n // break;\r\n case window.YT.PlayerState.ENDED:\r\n const countPlayed = countPlayedRef.current;\r\n if (countPlayed < 3 - 1) {\r\n console.log(\"ended\", countPlayed + 1);\r\n countPlayedRef.current = countPlayed + 1;\r\n if (player && player.playVideo) {\r\n player.playVideo();\r\n } else {\r\n setPlayerStatus(\"finished\");\r\n }\r\n } else {\r\n setPlayerStatus(\"finished\");\r\n }\r\n break;\r\n default:\r\n }\r\n },\r\n onReady: (e) => {\r\n //console.log('onReady');\r\n if (player && player.mute && player.playVideo) {\r\n player.mute();\r\n player.playVideo();\r\n }\r\n setTimeout(() => setPlayerStatus(\"loaded\"), 1000);\r\n },\r\n onError: (e) => {\r\n console.log(e);\r\n },\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 function getSize(container, sizeCalculator) {\r\n const containerSize = container ? { w: container.offsetWidth, h: container.offsetHeight } : { w: window.innerWidth, h: window.innerHeight };\r\n if (sizeCalculator) {\r\n const size = sizeCalculator(containerSize, canPlayVideo());\r\n if (size) return size;\r\n }\r\n\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\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 \r\n )}\r\n {canPlay && playerStatus === \"loaded\" && (\r\n
\r\n {muted ? : }\r\n
\r\n )}\r\n\r\n {!canPlay && !mobileImageUrl && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n setPopupOpened(false)} />\r\n
\r\n );\r\n}\r\n","import React from 'react';\n// import { Item } from '../../items/item';\n// import { SiteLink } from 'shared/link/siteLink';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { YoutubeBannerMobilePopup } from '../../../lib/youtube/youtubeBanner--mobilePopup';\n//import env from '../../../env';\n//import Slider from 'modules/slider/slider';\n//import {BannerPanel} from '../bannerPanel/view';\n\nexport function YoutubeBannerPanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\n const mobileImageUrl = cmsUtils.payload(item, 'ImageUrl');\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() >= 1200;\n const cssClass = utils.classNames('cms_item', 'youtubePanel', item.cssClass || item.anchorName || '');\n\n //console.log(window.innerWidth, canPlayVideo())\n\n return (\n
\n {/* {canPlayVideo() ? : } */}\n \n
\n );\n}\n\n// function MobileSlider(props) {\n// const item = props.item;\n// const subItems = item.items || [];\n \n// const slides = subItems.map((subItem, index) =>\n// \n// );\n\n// useLayoutEffect(() => {\n// setTimeout(() => {\n// console.log(window.innerWidth);\n// const slider = new Slider('.contSlider');\n// slider.init();\n// }, 100)\n// }, [])\n\n// return (\n//
\n// {slides}\n//
\n// );\n// }\n\n// function SlideItem(props){\n// const item = props.item;\n// const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n// return (\n//
\n// \"Banner\"\n//
\n// );\n\n// }","import React from 'react';\nimport Select from 'react-select'\nimport utils from '../../utils'\n\nexport function FilterDropdown({ title, isMulti = false, items, value, onChange }) {\n const currentSelection = utils.array.find(items, x => x.value === value)\n //console.log(items, value, currentSelection)\n const customStyles = {\n option: (provided, state) => ({\n ...provided,\n textAlign: 'left'\n })\n }\n const customTheme = theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: '#eee',\n primary: '#404040',\n },\n })\n\n function onChange_(selected) {\n //console.log(selected)\n if (isMulti)\n onChange((selected || []).map(x => x.value));\n else\n onChange(selected ? selected.value : '');\n }\n\n return (\n \n );\n\n}\n","import React, {useState, useEffect} from 'react';\nimport { SiteLink } from '../../components';\nimport { useStore } from '../../store';\n\nimport { FaChevronDown } from 'react-icons/fa';\nimport { SearchBar } from './searchBar';\n\nexport function NavBar(props) {\n const open = props.open;\n const currentLocation = props.currentLocation;\n const { state } = useStore();\n\n const menu = state.menu || { items: [] };\n const depth = 1;\n const menuItemElts = menu.items.map((item, index) =>\n \n );\n return (\n
\n \n
\n \n
\n\n
);\n\n}\n\nfunction MenuItem(props) {\n const [subMenuOpened, setSubMenuOpened] = useState(false);\n const item = props.item;\n const subItems = item.items || [];\n const currentLocation = props.currentLocation;\n\n const subItemsElts = subItems.length > 0? subItems.map((subItem, index) =>\n \n ) : null;\n\n\n useEffect(() => {\n //console.log('navbar', currentLocation);\n setSubMenuOpened(false);\n }, [currentLocation])\n\n function closeMenu() {\n props.onCloseMenu();\n }\n\n function toggleSubmenu(e) {\n e.preventDefault();\n e.stopPropagation();\n setSubMenuOpened(!subMenuOpened);\n }\n\n return (\n
  • \n closeMenu()}>\n {item.title}\n {subItemsElts && toggleSubmenu(e)}>}\n \n {subItemsElts &&\n
      \n {subItemsElts}\n
    }\n
  • \n )\n}\n\nfunction SubMenuItem(props) {\n const item = props.item;\n function closeMenu() {\n props.onCloseMenu();\n }\n\n return (\n
  • \n closeMenu()}>\n {item.title}\n \n
  • \n )\n}","import React, { useState, useEffect } from \"react\";\nimport { useRouter } from \"../../components\";\n//import { navigate, usePath, useLocationChange } from 'raviger';\nimport { SiteLink } from \"../../components\";\nimport { NavBar } from \"./navBar\";\nimport { FaAngleLeft } from \"react-icons/fa\";\nimport { useHistory } from \"../../components\";\nimport utils from \"../../utils\";\n//import env from '../../env';\n//import {LandingTopNav} from './landingTopNav';\n\nexport function TopHeader(props) {\n const { pathname } = useRouter();\n //const path = usePath();\n const [menuOpened, setMenuOpened] = useState(false);\n const [currentLocation, setCurrentLocation] = useState(pathname);\n\n //const [scrolled, setScrolled] = useState(false)\n // const history = useHistory();\n // console.log(history.length, history)\n\n const history = useHistory(pathname);\n\n const routeChanged = (path, history) => {\n //console.log(path, history);\n //console.log(window.location.hash)\n if (typeof window !== `undefined`) {\n const hash = window.location.hash;\n const search = window.location.search;\n history.push(path + hash + search);\n\n if (hash) {\n scrollTo();\n }\n }\n };\n\n useEffect(() => {\n scrollTo();\n }, []);\n\n //const pageChanged = useCallback(path => routeChanged(path, history), [history])\n // useLocationChange(path => {\n // routeChanged(path, history);\n // setCurrentLocation(path);\n // })\n\n useEffect(() => {\n routeChanged(pathname, history);\n setCurrentLocation(pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n function scrollTo() {\n const hash = window.location.hash;\n if (hash) {\n //console.log(hash)\n setTimeout(() => {\n const anchor = utils.ui.findElement(hash);\n if (anchor) utils.ui.scrollTo(anchor, 500);\n }, 500);\n }\n }\n\n function toggleMenu(e) {\n setMenuOpened(!menuOpened);\n }\n\n function onCloseMenu() {\n setMenuOpened(false);\n }\n\n function goBack(e) {\n //e.preventDefault();\n history.getPrevious();\n //console.log(previousLink)\n }\n\n function backTop() {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n // useEffect(() => {\n // console.log('use history')\n // }, []);\n\n //const womenSite = env.country === 'au' ? 'https://www.vssassoon.com.au' : 'https://www.vssassoon.co.nz'\n\n return (\n <>\n
    \n {history.history.length > 1 && (\n \n BACK{\" \"}\n \n )}\n\n {/* {\n history.history.length > 1 && goBack(e)}>\n BACK\n \n } */}\n\n {/*
    \n MEN\n |\n WOMEN\n
    */}\n\n
    \n
    \n \n logo\n \n
    \n\n \n \n \n \n \n\n {/* */}\n\n \n
    \n \n );\n}\n","import { css } from '@emotion/core';\nimport { mq } from '../../cssInJs'\n\nconst padding = [20, null, null, 30];\nconst paddingHalf = padding.map(x => x ? x / 2 : null);\n\nexport const topNav = {\n nav: css(mq({\n position: 'absolute',\n right: [44, null, null, 56],\n zIndex: '1000',\n overflow: 'hidden',\n display:'none',\n '&.show' : {\n display:'block'\n }\n })),\n skew: css(mq({\n background: 'rgba(255,255,255,0.15)',\n transform: 'skewX(-12deg) translateX(15px)',\n transformOrigin: 'top left',\n paddingRight: padding,\n paddingLeft: paddingHalf,\n })),\n unskew: css(mq({\n transform: 'skewX(12deg)',\n transformOrigin: 'top left',\n height: [24, 44, null, 56],\n display: 'flex',\n alignItems: 'center',\n })),\n link: css(mq({\n paddingLeft: paddingHalf,\n paddingRight: paddingHalf,\n display: 'inline-block',\n fontSize: [12, 16, 16, 18],\n fontWeight: 'bold',\n textTransform: 'uppercase',\n color: 'white'\n }))\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport { topNav } from './LandingTopNavStyle';\nimport { SiteLink } from '../../components';\n\nexport function LandingTopNav({style})\n{\n return
    \n
    \n
    \n Buy Now\n {/* Contact Us */}\n
    \n
    \n
    \n}","import Hammer from '@egjs/hammerjs'\nimport { gsap } from 'gsap';\n\nexport default class BottomDrawer {\n constructor(el, options = {}) {\n const defaults = {};\n this.settings = Object.assign({}, defaults, options);\n this.slider = el;\n\n // location\n this.currentTranslateY = 0;\n this.size = null;\n this.status = 'expanded';\n this.inititialised = false;\n this.tsEventHandled = new Date();\n }\n\n init() {\n this.size = this.getSize(this.slider);\n //console.log(this.size)\n //this.close()\n this.open()\n\n //\n const hammer = new Hammer.Manager(this.slider);\n hammer.add(new Hammer.Pan({ direction: Hammer.DIRECTION_VERTICAL, threshold: 0 }));\n\n hammer.on('panstart pan panend', e => {\n //console.log(e.type, e)\n if (e.type === 'panend') {\n this.switch(e.deltaY);\n } else if (e.type === 'pan') {\n this.moveDeltaTmp(e.deltaY)\n }\n });\n\n this.initEvent();\n }\n\n initEvent() {\n const bar = this.slider.querySelector('.bottomMenu__bar');\n if (this.inititialised) {\n bar.removeEventListener('click', (e) => this.handleClick(e, this))\n }\n bar.addEventListener('click', (e) => this.handleClick(e, this))\n this.inititialised = true;\n }\n\n handleClick(e, self) {\n e.preventDefault();\n e.stopPropagation();\n const dt = (new Date()) - this.tsEventHandled;\n //console.log('handleClick', dt);\n\n if (dt < 100) return;\n self.switch();\n }\n\n moveDeltaTmp(delta){\n const y = this.getBaseY() + delta;\n //console.log(y,delta)\n\n this.currentTranslateY = y < 0? 0 : (y > this.size.max ? this.size.max : y);\n this.move(this.currentTranslateY);\n }\n\n switch(delta){\n this.tsEventHandled = new Date();\n if ((delta < 0 && this.status === 'expanded') || (delta > 0 && this.status === 'collapsed')) return;\n const targetY = this.getTargetY();\n //console.log('return', this.currentTranslateY, targetY)\n \n gsap.fromTo(this.slider, {y: this.currentTranslateY}, {duration: 0.3, y: targetY, ease: 'power1'});\n this.status = this.status === 'collapsed'? 'expanded' : 'collapsed';\n this.currentTranslateY = targetY;\n }\n\n getBaseY() {\n return this.status === 'collapsed'? this.size.max : this.size.min;\n }\n\n getTargetY() {\n return this.status === 'collapsed'? this.size.min : this.size.max;\n }\n\n getSize(el) {\n const links = el.querySelector('.bottomMenu__links');\n const bar = el.querySelector('.bottomMenu__bar');\n return { min: 0, max: links.offsetHeight, barHeight: bar.offsetHeight };\n }\n\n move(dy) {\n this.slider.style.transform = `translate3d(0, ${dy}px, 0)`;\n }\n\n close() {\n this.status = 'collapsed';\n this.currentTranslateY = this.size.max;\n this.move(this.currentTranslateY);\n }\n\n open() {\n this.status = 'expanded';\n this.currentTranslateY = this.size.min;\n this.move(this.currentTranslateY);\n }\n}","import React, { useLayoutEffect, useRef } from 'react';\nimport { useRouter } from '../../components';\nimport { SiteLink } from '../../components';\nimport BottomDrawer from '../../components/bottomDrawer'\n\nexport function BottomDock(props) {\n const links = [\n { url: '/products', title: 'PRODUCTS' },\n { url: '/warranty', title: 'WARRANTY' },\n { url: '/show-me-how', title: 'SHOW ME HOW' },\n { url: '/contact', title: 'CONTACT' },\n { url: '/where-to-buy', title: 'STOCKISTS' }\n ];\n\n //const path = usePath();\n const { pathname } = useRouter();\n\n const isCurrent = (link) => {\n return pathname && pathname.toLowerCase() === link.toLowerCase();\n }\n\n const linkElts = links.map((link, index) =>\n
  • \n \n
    \n
    {link.title}
    \n
    \n
  • \n );\n\n const bottomMenu = useRef(null);\n useLayoutEffect(() => {\n //console.log('useLayoutEffect');\n const slider = new BottomDrawer(bottomMenu.current);\n setTimeout(() => slider.init(), 1000)\n }, [])\n\n return (\n <>\n \n
    \n \n );\n}\n","import { css } from '@emotion/core';\nimport { mq } from '../../cssInJs'\n\nexport default {\n instagrams: css({\n marginLeft: '-10px',\n marginRight: '-10px',\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n }),\n singBanner : css(mq({\n backgroundPosition: ['50% 50%',null, null, null, null, '50% 46%']\n }))\n}","import React from 'react';\nimport { SiteLink } from '../../components';\n\nexport function Breadcrumb({ breadcrumb }) {\n\n return (\n
      \n {breadcrumb.items.map((item, index) => Item(item, index))}\n
    \n );\n}\n\nfunction Item(item, index) {\n if (item.link) {\n return (\n
  • {item.title}
  • \n )\n } else {\n return (\n
  • {item.title}
  • \n )\n }\n}","import React, { useState, useEffect } from 'react';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport { NotFound } from '../../../components';\nimport env from '../../../env';\nimport { useStore } from '../../../store';\nimport { ErrorPopup, Loading } from '../../../components';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPartial({pageOptions = null}) {\n const { dispatch } = useStore();\n const [pageLoaded, setPageLoaded] = useState(false);\n const [data, setData] = useState(null);\n //const path = usePath();\n //log('view page', path);\n const pathname = '/partials/common-footer';\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n useEffect(() => {\n if (data){\n dispatch({ type: 'SET_PAGE', payload: data.data })\n dispatch({ type: 'SET_MENU', payload: data.menu })\n }\n // eslint-disable-next-line\n }, [data]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\n //const menuData = get.response.menu;\n const cmsOption = { pageOptions: pageOptions};\n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n setData(get.response);\n\n //document.title = pageData.pageTitle;\n return null;\n } else if (!pageData) {\n return ()\n }\n\n log('3. call rendering memo')\n return ;\n}\n\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
    \n )\n }\n );\n return (\n <>\n {sectionItems}\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","import React, { useState, useEffect } from 'react';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport env from '../../../env';\nimport { ErrorPopup } from '../../../components';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function CommonProductBottom() {\n const [pageLoaded, setPageLoaded] = useState(false);\n const pathname = '/partials/common-product-bottom';\n\n const get = useGet();\n useEffect(() => {\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n if (get.loading()) {\n return
    \n } else if (get.hasErrors()) {\n return \n }\n\n const pageData = get.response.data;\n const cmsOption = {};\n if (!pageLoaded && pageData) {\n setPageLoaded(true);\n return null;\n } else if (!pageData) {\n return (
    )\n }\n\n return ;\n}\n\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
    \n )\n }\n );\n return (\n <>\n {sectionItems}\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport style from \"./productViewStyle\";\nimport React from \"react\";\nimport env from \"../../env\";\nimport { SiteLink, NotFound } from \"../../components\";\nimport { useGet } from \"../../components\";\nimport { useRouter } from \"../../components\";\nimport utils from \"../../utils\";\nimport { ErrorPopup, Loading } from \"../../components\";\nimport { Breadcrumb } from \"../../components/breadcrumb/breadcrumb\";\nimport { ViewPartial } from \"../../cms/pages/partials/viewPartial\";\nimport { CommonProductBottom } from \"../../cms/pages/partials/commonProductBottom\";\nimport { Tile } from \"./productTile\";\nimport { YoutubeEmbed } from \"../../components\";\nimport { useInstagram } from \"../../components\";\nimport { useBV } from \"../bazzarVoice/useBV\";\n//import { ImagePopup } from 'modules/imagePopup/imagePopup';\n// import InstagramEmbed from \"react-instagram-embed\";\nimport Slider from \"react-slick\";\nimport FsLightbox from \"fslightbox-react\";\nimport { MetaTag } from \"../../components\";\nimport { FaRegFilePdf } from \"react-icons/fa\";\nimport { IoMdOpen } from \"react-icons/io\";\n\nimport { debounce } from \"../../lib/utils-core/debounce\";\nimport { gtm } from \"../../lib/tracking\";\nimport { InstaEmbedByLink } from \"../embed/instagram\";\n\nexport function ProductView(props) {\n const { query, Redirect } = useRouter();\n const [loaded, setLoaded] = React.useState(false);\n const get = useGet();\n useInstagram();\n\n const productCode = query.id || \"\";\n const category = query.category || \"\";\n const slug = query.slug || \"\";\n //console.log(category, slug, productCode)\n\n React.useEffect(() => {\n const url = productCode\n ? `/api/product/getProduct/${productCode}`\n : `/api/product/getProductByUrl?category=${category}&slug=${slug}`;\n get.send(env.apiBase + url);\n setLoaded(false);\n // eslint-disable-next-line\n }, [productCode, slug]);\n \n if (get.loading()) {\n return ;\n } else if (get.hasErrors() && get.containsErrorMessage(\"no product\")) {\n return ;\n } else if (get.hasErrors()) {\n return ;\n } else if (get.response && get.response.redirectTo && get.response.redirectTo !== '') {\n return ;\n }\n\n //console.log(get)\n const data = get.response;\n\n if (get.done() && !loaded) {\n setLoaded(true);\n const pageUrl = productCode\n ? `/product/${productCode}`\n : `/products/${category}/${slug}`;\n const pageTitle =\n data.totalCnt === 0 ? \"No product found\" : data.productName;\n gtm.pageView(pageUrl, pageTitle);\n }\n\n if (data.totalCnt === 0) return
    No product found.
    ;\n return (\n \n \n \n\n \n \n \n );\n}\n\nfunction Product({ product }) {\n const mainPhoto =\n product.productImages.length > 0\n ? product.productImages[0]\n : { imageUrl: \"/assets/product-empty.png\", alt: product.productName };\n const allPhotos = product.productImages || [];\n //const otherPhotos = product.productImages.length > 0 ? product.productImages.filter(x => !x.isPackage) : [];\n const packagePhotos =\n product.productImages.length > 0\n ? product.productImages.filter((x) => x.isPackage)\n : [];\n\n const popupImages = allPhotos.map((x) => x.imageUrl);\n\n const [isMobile, setIsMobile] = React.useState(utils.site.isMobile());\n\n const [currentTab, setCurrentTab] = React.useState(\n isMobile ? \"wheretobuy\" : \"wheretobuy\"\n );\n const [heroImage, setHeroImage] = React.useState(mainPhoto);\n\n const [toggler, setToggler] = React.useState(false);\n //const [popupImages, setPopupImages] = React.useState();\n const [popupIndex, setPopupIndex] = React.useState(0);\n const country = utils.site.isNZ ? \"New Zealand\" : \"Australia\";\n const schemaImages = product.productImages.map(\n (x) =>\n (country === \"New Zealand\"\n ? \"https://www.conairman.com.au\"\n : \"https://www.conairman.co.nz\") + x.imageUrl\n );\n\n React.useEffect(() => {\n const resized = debounce(() => {\n setIsMobile(utils.site.isMobile());\n }, 1000);\n if (typeof window !== `undefined`) {\n window.addEventListener(\"resize\", resized);\n }\n\n const settingSchemaInterval = setInterval(() => {\n const bvRatingSchema = document.getElementById(\n \"bv-jsonld-bvloader-summary\"\n );\n\n if (bvRatingSchema) {\n const bvRatingSchemaData = JSON.parse(bvRatingSchema.innerHTML);\n const productStructuredData = {\n \"@context\": \"https://schema.org/\",\n \"@type\": \"Product\",\n name: product.productName,\n url:\n (country === \"New Zealand\"\n ? \"https://www.conairman.co.nz\"\n : \"https://www.conairman.com.au\") + product.productUrl,\n description: product.intro,\n sku: product.productCode,\n brand: {\n \"@type\": \"Brand\",\n name: \"ConairMan\",\n },\n gtin13:\n product.barcode && product.barcode !== \"\" ? product.barcode : \"\",\n category: product.category,\n image: schemaImages,\n aggregateRating: bvRatingSchemaData.aggregateRating,\n offers: {\n \"@type\": \"Offer\",\n url:\n (country === \"New Zealand\"\n ? \"https://www.conairman.co.nz\"\n : \"https://www.conairman.com.au\") + product.productUrl,\n priceCurrency: country === \"New Zealand\" ? \"NZD\" : \"AUD\",\n price: product.price + \"\",\n availability: \"https://schema.org/InStock\",\n itemCondition: \"https://schema.org/NewCondition\",\n },\n };\n\n const productSchemaScript = document.createElement(\"script\");\n productSchemaScript.id = \"productSchemaScript\";\n productSchemaScript.type = \"application/ld+json\";\n productSchemaScript.innerHTML = JSON.stringify(productStructuredData);\n\n document.head.removeChild(bvRatingSchema);\n document.body.appendChild(productSchemaScript);\n clearInterval(settingSchemaInterval);\n } else {\n const productStructuredData = {\n \"@context\": \"https://schema.org/\",\n \"@type\": \"Product\",\n name: product.productName,\n url:\n (country === \"New Zealand\"\n ? \"https://www.conairman.co.nz\"\n : \"https://www.conairman.com.au\") + product.productUrl,\n description: product.intro,\n sku: product.productCode,\n brand: {\n \"@type\": \"Brand\",\n name: \"ConairMan\",\n },\n gtin13:\n product.barcode && product.barcode !== \"\" ? product.barcode : \"\",\n category: product.category,\n image: schemaImages,\n offers: {\n \"@type\": \"Offer\",\n url:\n (country === \"New Zealand\"\n ? \"https://www.conairman.co.nz\"\n : \"https://www.conairman.com.au\") + product.productUrl,\n priceCurrency: country === \"New Zealand\" ? \"NZD\" : \"AUD\",\n price: product.price + \"\",\n availability: \"https://schema.org/InStock\",\n itemCondition: \"https://schema.org/NewCondition\",\n },\n };\n\n const productSchemaScript = document.createElement(\"script\");\n productSchemaScript.id = \"productSchemaScript\";\n productSchemaScript.type = \"application/ld+json\";\n productSchemaScript.innerHTML = JSON.stringify(productStructuredData);\n\n document.body.appendChild(productSchemaScript);\n clearInterval(settingSchemaInterval);\n }\n }, 100);\n\n const checkBvReviewSchemaSI = setInterval(() => {\n const bvReviewSchemaScript = document.getElementById(\n \"bv-jsonld-reviews-data\"\n );\n if (bvReviewSchemaScript) {\n document.head.removeChild(bvReviewSchemaScript);\n clearInterval(checkBvReviewSchemaSI);\n }\n }, 100);\n\n return () => {\n if (typeof window !== `undefined`) {\n window.removeEventListener(\"resize\", resized);\n }\n clearInterval(settingSchemaInterval);\n clearInterval(checkBvReviewSchemaSI);\n };\n\n // eslint-disable-next-line\n }, []);\n\n React.useLayoutEffect(() => {\n setTimeout(() => {\n bv.sendEvent(\n \"WhereToBuy\",\n \"WhereToBuyTab_ProductPage\",\n product.productCode\n );\n }, 1500);\n\n // eslint-disable-next-line\n }, []);\n\n // BV\n const onShowReview = React.useCallback((e) => {\n //e.stopPropagation();\n showTab(\"reviews\", true);\n // eslint-disable-next-line\n }, []);\n\n const bv = useBV(product, {\n showReview: onShowReview,\n });\n\n function openPopupImage(imageUrl) {\n const inx = utils.array.findIndex(popupImages, (x) => x === imageUrl);\n setPopupIndex(inx >= 0 ? inx : 0);\n setToggler(!toggler);\n }\n\n function showTab(tab, forceToScroll = false) {\n if (tab === currentTab && isMobile) {\n setCurrentTab(\"\");\n return;\n }\n if (tab === \"wheretobuy\") {\n //bv.sendEvent(\"WhereToBuy\", \"WhereToBuyTab_ProductPage\", product.productCode);\n }\n\n if (tab !== currentTab) {\n gtm.sendGAEvent(\"Product Tab\", \"Select\", tab);\n }\n setCurrentTab(tab);\n scrollTo(\"tab-\" + tab, forceToScroll);\n }\n\n function scrollTo(selector, forceToScroll = false) {\n if (!forceToScroll && !isMobile) return;\n setTimeout(() => {\n const anchor = utils.ui.findElement(selector);\n if (anchor) utils.ui.scrollTo(anchor, 300);\n }, 200);\n }\n\n const slides = allPhotos.map((photo, index) => (\n \n setHeroImage(photo)}\n >\n {/* {photo.alt} setHeroImage(photo)} /> */}\n \n ));\n\n var settings = {\n dots: false,\n infinite: slides.length > 2 ? true : false,\n speed: 500,\n autoplaySpeed: 3000,\n initialSlide: 1,\n //fade: true,\n autoplay: false,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n ],\n };\n\n const tabs = [\n {\n id: \"wheretobuy\",\n title: \"Where to buy\",\n tabView: WhereToBuyTab,\n visible:\n (product.whereToBuySection || []).length > 0 ||\n (product.whereToBuys || []).length > 0,\n },\n { id: \"reviews\", title: \"Reviews\", tabView: BVReviewTab, visible: true },\n { id: \"details\", title: \"Details\", tabView: DetailsTab, visible: true },\n {\n id: \"howto\",\n title: \"How To\",\n tabView: HowtoTab,\n visible: (product.HowtoTab || []).length > 0,\n },\n {\n id: \"seemore\",\n title: \"See More\",\n tabView: SeeMoreTab,\n visible: (product.seeMoreSection || []).length > 0,\n },\n {\n id: \"faqs\",\n title: \"FAQs\",\n tabView: FaqTab,\n visible: (product.faqSection || []).length > 0,\n },\n ];\n const visibleTabs = tabs.filter((tab) => tab.visible);\n const tabPanels = isMobile ? (\n
    \n {visibleTabs.map((tab) => (\n
    \n showTab(tab.id)}\n >\n {tab.title}\n
    \n \n \n
    \n \n ))}\n \n ) : (\n
    \n
    \n {visibleTabs.map((tab) => (\n showTab(tab.id)}\n >\n {tab.title}\n
    \n ))}\n
    \n\n
    \n {visibleTabs.map((tab) => (\n \n \n
    \n ))}\n \n \n );\n\n const discoverMoreLinks = product.discoverMoreSection.map((x) =>\n JSON.parse(x.itemValue)\n );\n const barcodeCleaned = product.barcode\n ? product.barcode.replace(/-/g, \"\").replace(/ /g, \"\")\n : null;\n\n return (\n
    \n \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n\n {product.intro && (\n \n )}\n {barcodeCleaned && }\n {barcodeCleaned && (\n \n )}\n {heroImage && heroImage.imageUrl && (\n \n )}\n\n
    \n
    \n\n
    \n
    \n {/* */}\n openPopupImage(heroImage.imageUrl)}\n />\n {allPhotos.length > 1 && (\n
    \n {slides}\n
    \n )}\n
    \n
    \n {product.productName.indexOf(\"i-\") === 0 ? (\n

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

    \n ) : (\n \n \n {product.productName}\n \n \n )}\n
    \n {product.priceText ? product.priceText : \"\"}\n
    \n
    \n Product code: {product.productCode}\n
    \n
    \n
    \n
    \n {product.productStatus === 98 /*Discontinued*/ && (\n
    \n This product is now discontinued.\n
    \n )}\n
    {product.intro}
    \n {discoverMoreLinks && (\n
    \n {discoverMoreLinks.map((link, index) => (\n
    \n \n {link.title}\n \n
    \n ))}\n
    \n )}\n\n
    \n {packagePhotos.map((photo, index) => (\n
    \n openPopupImage(photo.imageUrl)}\n />\n
    \n ))}\n
    \n
    \n
    \n\n {tabPanels}\n\n \n
    \n
    \n
    \n \n );\n}\n\nfunction getMetaTag(product, mainPhoto) {\n const country = utils.site.isNZ ? \"New Zealand\" : \"Australia\";\n const siteName = env.siteName + \" \" + country;\n\n return {\n title: product.productName + \" | \" + siteName,\n description: product.metaDesc || product.intro,\n keywords: \"\",\n heroImageUrl: utils.site.fullUrl(mainPhoto.imageUrl),\n language: \"English\",\n country: country,\n siteName: siteName,\n url: utils.site.fullUrl(product.productUrl),\n alternates: utils.site.getAlternates(product.productUrl),\n\n //facebook-domain-verification\n faceBookDomainVerifi:\n country === \"New Zealand\"\n ? env.FaceBookDomainVerifiNZ\n : env.FaceBookDomainVerifiAU,\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n };\n}\n\nfunction BVReviewTab({ product }) {\n return (\n
    \n );\n}\n\nfunction WhereToBuyTab({ product }) {\n const section = product.whereToBuySection || [];\n return (\n
    \n {section.length > 0 && }\n {product.whereToBuys && product.whereToBuys.length > 0 && (\n \n )}\n
    \n );\n}\n\nfunction RelatedProducts({ products }) {\n //console.log(products)\n if (products.length === 0) return null;\n return (\n
    \n

    RELATED PRODUCTS

    \n
    \n {products.map((product, index) => (\n \n ))}\n
    \n
    \n );\n}\n\nfunction Stores({ stores }) {\n return (\n
      \n {stores.map((store) => (\n
    • \n
      \n \n
      {store.storeName}
      \n {store.buyOnline && (\n \n Buy online \n \n )}\n
      \n
    • \n ))}\n
    \n );\n}\n\nfunction HowtoTab({ product }) {\n const section = product.howToSection || [];\n return ;\n}\n\nfunction FaqTab({ product }) {\n const section = product.faqSection || [];\n return ;\n}\n\nfunction DetailsTab({ product }) {\n const section = product.detailSection || [];\n const hasWarranty = section.some(\n (x) => (x.itemValue || \"\").indexOf(\"WARRANTY\") >= 0\n );\n\n const techSpecs =\n product.specSection && product.specSection.length > 0\n ? TechSpecs(product.specSection)\n : null;\n const hasTech = section.some(\n (x) => (x.itemValue || \"\").indexOf(\"TECHNICAL SPECIFICATIONS\") >= 0\n );\n\n return (\n \n \n {!hasTech && techSpecs && (\n
    \n

    TECH TALK

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

    BARCODE

    \n

    {product.barcode}

    \n
    \n )}\n {product.useSparePartInstruction && }\n {product.bookletLink && }\n
    \n );\n}\n\nfunction SparePart() {\n return (\n
    \n

    SPARE PARTS

    \n

    \n Lost a part to your favourite ConairMan tool? No problem, contact our{\" \"}\n Customer Service team & they’ll sort\n you out.\n

    \n
    \n );\n}\n\nfunction Warranty({ warrantyYear, warrantyDetails }) {\n if (warrantyDetails) {\n return (\n
    \n

    WARRANTY

    \n

    Backed by a {warrantyYear} year warranty*

    \n

    * {warrantyDetails}

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

    WARRANTY

    \n

    Backed by a {warrantyYear} year warranty

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

    INSTRUCTION BOOKLET

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

    {video.title}

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

    {video.title}

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