{"version":3,"sources":["lib/polyfill-ie/index.js","components/notFound/notFound.js","env.js","lib/app-version/index.js","components/form/buttons/button.js","lib/ui-error/errorMessage.js","lib/ui-error/errorPopup.js","lib/icons-svg/icons/NarrowRight.js","cssInJs/variables.js","config.js","lib/icons-svg/icons/Loading--circle.js","lib/ui-loading-v2/sectionLoading.js","lib/utils-core/url.js","lib/utils-core/form.js","lib/utils-core/array.js","lib/utils-core/date.js","lib/utils-core/css.js","lib/utils-core/ui.js","lib/utils-core/money.js","lib/utils-core/text.js","lib/utils-core/random.js","lib/utils-core/object.js","lib/utils-core/index.js","site/siteUtils.js","utils/index.js","lib/net-api/index.js","lib/dev-mediaQueryStatus/index.js","lib/seo/meta-tag.js","lib/seo/tracking--deprecated.js","lib/animation/animationUtils.js","lib/net-loader/loadJs.js","lib/ui-parallax/index.js","lib/router/useRouter.js","lib/router/useHistory.js","lib/router/handleLink.js","lib/router/siteLink.js","lib/css-emotion/variables.js","lib/css-emotion/breakpoints.js","lib/css-emotion/mixin.js","lib/instagram-feed/feedStyle.js","lib/instagram-feed/feed.js","lib/youtube/iframeApi.js","lib/store/reducers.js","lib/store/storeProvider.js","lib/youtube/youtubeEmbed.js","cms/utils/cmsUtils.js","cms/items/bannerPanel/view.js","cms/items/bannerItem/view.js","cms/items/panel/view.js","cms/items/html/view.js","cms/items/imagePanel/view.js","components/pageTile--bsyc/style.js","components/pageTile--bsyc/view.js","cms/items/singleBanner/view.js","lib/form/formModelHelper.js","lib/form/formBuilder.js","lib/form/validatorHelper.js","lib/form/validators/required.js","lib/form/validators/email.js","lib/form/validators/date.js","lib/form/validators/length.js","lib/form/validators.js","lib/form/formRenderHelper.js","lib/form/components/ValidationAlert.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/TextareaInput.js","lib/form/controls/CheckboxInput.js","lib/form/controls/SelectInput.js","lib/form/controlRenderer.js","lib/form/formValidate.js","lib/form/useForm.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","cms/items/youtubeEmbedded/view.js","site/searchResult/searchResult.js","site/tipping/tippingCommon.js","site/tipping/signup/signup.js","site/tipping/signup/formModel.js","site/tipping/login/login.js","site/tipping/login/formModel.js","site/tipping/recoverPassword/recoverPassword.js","site/tipping/recoverPassword/formModel.js","site/tipping/enter/roundStyle.js","site/tipping/enter/round.js","site/tipping/menu.js","site/tipping/enter/enterTip.js","site/tipping/review/reviewStanding.js","site/tipping/password/changePassword.js","site/tipping/password/formModel.js","site/tipping/text/tippingText.js","site/priceUpdate/priceUpdate.js","site/priceUpdate/formModel.js","site/priceUpdateSimple/priceUpdate.js","site/priceUpdateSimple/formModel.js","site/paymentPaperwork/form.js","site/paymentPaperwork/formModel.js","site/contractPaperwork/form.js","site/contractPaperwork/formModel.js","cms/items/code/view.js","cms/items/blogPosts/view.js","cms/items/blogPostTitle/view.js","cms/items/multiColumnPanel/view.js","cms/items/expandableHtml/view.js","components/testimonial/testimonialPanel/style.js","components/testimonial/testimonialItem/style.js","components/testimonial/testimonialItem/view.js","components/testimonial/testimonialPanel/view.js","components/photoGallery/style.js","components/photoGallery/view.js","cms/items/item.js","cms/pages/viewPage/viewPage.js","lib/instagram-useInstagram/index.js","cms/services/cms-radio-sender.js","cms/services/cms-radio-receiver.js","cms/services/cms-html-editor.js","cms/services/cms-page-controller.js","cms/pages/editPage/editPage.js","layout/topHeader/navBar.js","layout/topHeader/topHeader.js","components/bottomDrawer/index.js","layout/bottomDock/bottomDock.js","components/pdfViewer/view.js","layout/popup/commonVideoPopup.js","App.js","serviceWorker.js","index.js"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","NotFound","props","debugInfo","className","href","onClick","e","preventDefault","window","location","reload","refreshPage","history","back","goBack","style","marginTop","color","fontSize","pageUrl","loadFrom","config","isProd","process","locale","getLocale","siteName","siteCode","apiBase","resourceBase","baseOrigin","origin","GATSBY_BASEURL","getBaseUrl","cmsEndpoint","ver","updateDate","bvClientId","bvSiteId","bvEnv","bvLocale","REACT_APP_COUNTRY_LOCALE","hostname","toLowerCase","indexOf","search","getCountry","console","log","AppVersion","React","useState","checkStatus","setCheckStatus","env","useEffect","updateSW","then","timer","setTimeout","clearTimeout","button","type","AppVersionPage","margin","width","Button","status","children","btnStyle","buttonStyle","disabled","role","aria-hidden","ErrorMessage","errors","summaryMessage","length","message","Array","isArray","map","error","index","key","ErrorPopup","title","messages","push","css","position","padding","maxWidth","maxHeight","background","top","left","transform","inx","dangerouslySetInnerHTML","__html","SvgNarrowRight","variables","familyBase","familyHeader","primaryColor","fontColor","bgColor","breakpointNames","breakpoints","cssEmotion","iconColors","primary","secondary","secondaryColor","siteConfig","SvgLoading","height","viewBox","preserveAspectRatio","cx","cy","r","fill","stroke","strokeWidth","attributeName","repeatCount","dur","values","keyTimes","keySplines","calcMode","begin","Loading","loaded","setLoaded","loading","minHeight","display","justifyContent","alignItems","opacity","transition","isExternalLink","link","getLinkFromElement","linkEl","getAttribute","getLinkInfo","currentPath","pathname","linkFiltered","replace","linkLower","isExternal","isHash","isTel","isMailTo","url","path","i","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","toQueryString","params","Object","keys","encodeURIComponent","join","getYoutubeId","undefined","getErrors","result","forEach","err","errorMessage","getErrorMessage","convertToObject","array","reduce","obj","item","convertToKeyValues","value","moveItem","list","fromIndex","toIndex","splice","removed","removeItem","find","fn","findIndex","contains","sum","total","caseInsensitiveCompare","a","b","localeCompare","compareIgnoreEmpty","asc","isNaN","addDays","date","days","Date","setDate","getDate","formatYYYYMMDD","dateObj","toDate","dd","mm","getMonth","yyyy","getFullYear","parseDate","parseISO","dateStr","format","parse","isValidDate","d","bgUrl","imageUrl","encodeURI","decodeURI","bgUrlStyle","screenWidth","innerWidth","document","documentElement","clientWidth","body","screenHeight","innerHeight","clientHeight","outerWidth","offsetWidth","outerHeight","offsetHeight","hasClass","classList","match","RegExp","addClass","add","removeClass","remove","reg","toggleClass","scrollTo","selector","duration","delay","findElement","offset","elementOffset","gsap","to","ease","querySelectorOrNull","querySelector","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElementInViewport","bottom","right","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isEmpty","capitalize","expression","charAt","toUpperCase","slice","toFieldName","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","x","parts","toString","registerPlugin","ScrollToPlugin","shortId","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","classNames","form","ui","money","text","random","object","isMobile","utils","resourcePath","isNZ","coreUtils","site","useApi","response","setResponse","setErrors","setStatus","request","setRequest","async","options","user","JSON","localStorage","getItem","token","headers","fetch","res","ok","json","statusText","fetchData","hasErrors","addErrors","errs","done","send","sendRaw","httpOptionFn","args","reset","usePost","formDataFn","data","method","post","stringify","sending","sendFormData","useGet","get","MediaQueryStatus","MetaTag","seoData","assign","description","name","content","keywords","language","country","heroImageUrl","rel","canonical","MAX","MIN","getScrollProgress","scroll","scrollY","progress","boundsTop","viewport","bounds","setClass","pr","range","prVal","from","scale","y","removeTransform","getScreenSize","holder","storeName","loadJs","promises","scripts","script","loadScript","Promise","all","resolve","reject","networkLoaded","createElement","src","onload","onerror","getElementsByTagName","appendChild","defaultSettings","cutoffPadding","speed","ParallaxData","settings","screenSize","panels","imageRatio","panelHeight","elements","timeoutId","useParallax","handleScroll","element","au","min","calculated","fromTop","max","toTop","backgroundPositionY","init","useLayoutEffect","addEventListener","removeEventListener","cnt","panel","querySelectorAll","autoPanelHeight","parseFloat","shadowHeight","shadowWidth","baseHeight","backgroundSize","useRouter","useParams","useLocation","useHistory","useRouteMatch","useMemo","navigate","Redirect","hash","query","queryString","historyItem","handleElementLink","externalHandler","linkInfo","handled","SiteLink","target","other","goToLink","stopPropagation","mq","facepaint","bp","mqMin","mqMax","overlay","tiles","marginLeft","marginRight","flexWrap","tile","flexBasis","cursor","tileImage","mixin","backgroundColor","tileIcon","zIndex","InstagramFeed","Feeds","posts","numOfPost","xs","sm","md","lg","xl","xxl","displayingPosts","Feed","alt","loadApi","onApiReady","YT","tag","onYouTubeIframeAPIReady","firstScriptTag","insertBefore","thumbnailMax","videoId","getYoutubeCode","initialState","page","menu","popup","reducer","state","action","payload","Error","StoreContext","createContext","StoreProvider","useReducer","dispatch","Provider","useStore","useContext","YoutubeEmbed","yt","playerVars","allow","frameBorder","allowFullScreen","defaultVal","found","payloads","BannerPanel","subItems","items","cmsOption","heightSet","cmsUtils","slides","subItem","Item","itemId","cssClass","anchorName","data-cms-item-id","isCmsEdit","id","dots","infinite","autoplaySpeed","fade","autoplay","slidesToShow","slidesToScroll","BannerItem","captionTitle","linkUrl","titlePanel","backgroundImage","Panel","backgroundTile","bgTheme","subItemsElts","Html","htmlBlock","useRef","buttons","current","restructureButton","ref","data-cms-html","processed","handleClick","span","innerHTML","ImagePanel","cssClass2","data-pxh","pageTiles","pageTile__tile","flex","tile__content","flexDirection","textDecoration","tile__bg","paddingTop","backgroundPosition","backgroundRepeat","tile__details","overflow","flexGrow","textAlign","fontFamily","fontWeight","lineHeight","paddingBottom","PageTilesBsyc","pageTileElts","pagesSerialized","getPages","Tile","disableLink","idx","pageTitle","tileDesc","SingleBanner","findControl","controlName","root","findControlTraverse","control","controls","getValue","getValueTraverse","helperFns","getFilesTraverse","getKeyValueTraverse","keyValue","controlType","customValueFn","files","abstractControl","controlObject","validators","controlOptions","touched","incomplete","findValidator","controlArray","ctrl","formModelHelper","hasRequiredValidator","getNameForValidator","label","createValidator","opt","validate","defaultOpt","continueToValidate","getValidatorOptions","val","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","Required","validateOpt","triggeredByChange","Email","PastDate","Length","validateControl","getLabel","formOption","requiredMark","getLabelAsString","ValidationAlert","TextInput","handleChange","fieldId","usePlaceholder","fieldLabel","placeHolder","valueStr","htmlFor","onChange","onBlur","placeholder","checked","optionValue","includes","DateSeparateInput","thisYear","year","setYear","month","setMonth","day","setDay","handleChangeInner","persist","months","selectStyle","handleChangeDay","handleChangeMonth","m","handleChangeYear","FileInput","Components","RadioListInput","option","inline","TextareaInput","rows","CheckboxInput","CheckboxListInput","SelectInput","_renderControl","Component","getControl","renderControl","formRoot","validateTraverse","errorsFromControl","errorsFromSub","useForm","initialFormModel","formModel","setFormModel","template","controlFromEvent","getControlValue","onBeforeUpdateValue","validateGroup","successHandler","errorHandler","formValidate","model","controlRenderer","validateForm","getFiles","hasGTM","dataLayer","pageView","pageOpt","event","sendEvent","eventName","Contact","emailReceiver","fb","phone","email","enquiry","sendingStatus","setSendingStatus","gtm","contactEmail","render","ContactForm","YoutubeBannerMobilePopup","playerStatus","setPlayerStatus","playerSize","setPlayerSize","ytPlayer","setYtPlayer","muted","setMuted","countPlayedRef","popupOpened","setPopupOpened","video","videoLinkOrId","playerId","posterImageUrl","canPlayVideo","player","Player","events","PlayerState","ENDED","countPlayed","playVideo","mute","youtubeBannerRef","useCallback","container","containerSize","w","h","size","getSize","pauseVideo","unMute","channel","isOpen","onClose","YoutubeBannerPanel","YoutubeEmbedded","videoCode","SearchResult","keyword","q","pages","PageList","searchHighlight","setSession","sessionToken","setItem","getSession","setTippingCompId","getTippingCompId","TippingSignup","compId","username","password","confirmPassword","firstName","surname","address","address2","suburb","mobile","favoriteTeam","favoriteLocalTeam","tradingName","ngrNumber","nominatingFarmer","teamName","abn","getModel","results","TippingLogin","marginBottom","TippingRecoverPassword","comp","team","teamIcon","enterInput","roundHeader","roundHeaderCell","roundHeaderCellCurrent","venue","textTransform","borderBottom","game","teams","home","homeIcon","homeInput","away","awayIcon","awayInput","draw","drawInput","teamHelp","Round","compRound","roundChanged","valueChanged","sessionKey","Set","games","gameDate","tip","gameId","roundHeaders","RoundHeader","compRoundId","round","currentRoundId","filter","gameTime","homeTeamImage","homeTeamName","homeTeamId","finished","winTeamId","awayTeamImage","awayTeamName","awayTeamId","viewMode","marginVal","roundName","tippingMenu","paddingRight","borderRight","border","TippingMenu","EnterTip","setCurrentRoundId","setCompRound","roundId","teamId_","teamId","parseInt","ReviewStanding","compCode","standing","setStanding","rank","TippingChangePassword","currentPassword","TippingText","textType","setText","PriceUpdate","productList","subscribeList","contactPerson","products","productOther","deliveryTerminal","smsService","emailService","PriceUpdateSimple","PaymentPaperwork","paymentDate","paymentAmount","paymentNumber","ContractPaperwork","contractNumber","contractDate","grade","tonnes","Code","code","codeType","codeJson","BlogPosts","numOfTileLines","tilesPerLine","step","tilesToShow","setTilesToShow","showMore","BlogPostTitle","postDate","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","ExpandableHtml","open","setOpen","buttonTitle","icon","iconOpen","iconClosed","panelCollapsed","panelOpen","testimonialPanel","testimonialItem","testimonialItem_title","testimonialItem_desc","testimonialItem_bottom","TestimonialItem","startRatingColor","desc","ratingValue","rating","TestimonialPanel","testimonialItems","responsive","breakpoint","photoGallery","photos","photoContainer","flexShrink","photo","photoEmpty","enablePanzoom","showCaption","showThumbnails","PhotoGallery","imageElts","im","itemElt","itemTypeCode","PageMemo","memo","pageData","sectionItems","sections","section","Section","sectionName","getMetaTag","pageTypeCode","prevProps","nextProps","ViewPage","pageLoaded","setPageLoaded","setData","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","useInstagram","CmsRadioSender","controller","cloned","parent","postMessage","htmlChanges","sendMessageToParent","returnTo","html","CmsRadioReceiver","self","selectItem","mediaSelectedCKEditor","getAllDirtyHtml","sender","returnAllDirtyHtml","getHtml","returnHtml","tools","callFunction","funcNum","selectedPath","selectItemFromController","CmsHtmlEditor","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","Math","floor","animate","$section","getCurrentHtml","ItemId","SectionId","Content","itemid","formvals","cms_replace_item_html","EditPage","cmsViewMode","pageId","cmsPageController","catch","NavBar","currentLocation","menuItemElts","MenuItem","onCloseMenu","subMenuOpened","setSubMenuOpened","SubMenuItem","closeMenu","toggleSubmenu","TopHeader","menuOpened","setMenuOpened","setCurrentLocation","initHistory","setHistory","nav","getLast","getPrevious","getPreviousPath","routeChanged","anchor","pathFiltered","toLocaleLowerCase","specialClassName","aria-label","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","PdfViewer","CommonVideoPopup","toggler","setToggler","sources","setSources","popupIndex","setPopupIndex","onOpen","PageUpdated","parallax","AppLayout","useScrollPosition","prevPos","currPos","App","isLocalhost","Boolean","serviceUpdateCheckerInterval","registerValidSW","swUrl","navigator","serviceWorker","register","updateViaCache","registration","scope","clearInterval","setInterval","update","preventDevToolsReloadLoop","ev","onupdatefound","installing","installingWorker","onstatechange","onUpdate","onSuccess","ready","ReactDOM","getElementById","URL","contentType","unregister","checkValidServiceWorker","confirm","waiting"],"mappings":"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","file":"static/js/main.4a53cf48.chunk.js","sourcesContent":["// closest\r\n\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || \r\n Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function(s) {\r\n var el = this;\r\n\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n\r\n\r\n// getBoundingClientRect","import React from 'react';\n\nexport function NotFound(props) {\n const debugInfo = props.debugInfo;\n\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}","const config = {\n isProd: process.env.NODE_ENV === \"production\",\n locale: getLocale(),\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\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';\r\nimport env from '../../env';\r\n\r\nexport function AppVersion(props) {\r\n\r\n const [checkStatus, setCheckStatus] = React.useState('idle')\r\n //const [secs, setSecs] = React.useState(10)\r\n const ver = env.ver;\r\n const updateDate = env.updateDate;\r\n\r\n React.useEffect(() => {\r\n console.log(checkStatus);\r\n if (checkStatus === 'checking') {\r\n if (typeof window !== `undefined`) {\r\n window.updateSW().then(function () {\r\n console.log('sw update called');\r\n setCheckStatus('checked')\r\n })\r\n }\r\n\r\n let timer = setTimeout(() => {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload()\r\n }\r\n }, 5000)\r\n return () => { clearTimeout(timer) }\r\n }\r\n }, [checkStatus])\r\n\r\n function checkUpdates(e) {\r\n if (typeof window !== `undefined`) {\r\n if (window.updateSW) {\r\n setCheckStatus('checking')\r\n } else {\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n\r\n function refreshApp(e) {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n let button = null\r\n if (checkStatus === 'checking') {\r\n button = ;\r\n } else if (checkStatus === 'checked') {\r\n button = <>
(If this does't reload automatically, please click the above button)
;\r\n } else {\r\n button = ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Version: {ver} ({updateDate})\r\n
\r\n
\r\n {button}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport function AppVersionPage(props) {\r\n return (\r\n
\r\n \r\n
);\r\n}","import React from 'react';\n\nexport function Button({onClick, status, children, btnStyle='primary', type='button'}) {\n let buttonStyle = 'btn-' + btnStyle;\n return (\n \n );\n}","import React from 'react';\r\n\r\nexport const ErrorMessage = ({ errors, summaryMessage }) => {\r\n if (!errors) return null;\r\n if (typeof errors.length !== 'undefined' && errors.length === 0) return null;\r\n \r\n if (summaryMessage) return
{summaryMessage}
\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
{message}
\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 })\r\n\r\n return
\r\n

{title}

\r\n {props.children}\r\n {messages.map((error, inx) => (\r\n
\r\n ))}\r\n \r\n
\r\n}\r\n","import React from \"react\";\r\n\r\nfunction SvgNarrowRight(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgNarrowRight;\r\n","const overloading = {\n breakpointNames: ['sm', 'md', 'lg', 'xl', 'xxl'],\n breakpoints: [576, 768, 992, 1200, 1600]\n}\n\nconst variables = {\n familyBase: '\"Gotham\",sans-serif',\n familyHeader: '\"DIN Next LT Pro\",serif',\n\n primaryColor: '#007047',\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\nconst iconColors = {\n primary: variables.primaryColor,\n secondary: variables.secondaryColor || '#000'\n}\n\nexport default {\n cssEmotion,\n iconColors\n}","import * as React from \"react\";\r\nimport siteConfig from '../../../config';\r\n\r\nconst iconColors = (siteConfig && siteConfig.iconColors) || { primary: \"#eee\", secondary: \"#000\" }\r\n\r\nfunction SvgLoading(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgLoading;","import React from 'react';\r\nimport { LoadingCircle } from '../../icons';\r\n/** @jsx jsx */\r\nimport { css, jsx } from '@emotion/core'\r\n\r\nexport function Loading(props) {\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n const style = {\r\n loading: css({\r\n minHeight: '300px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n opacity: '0',\r\n transition: 'all 1s',\r\n }),\r\n loaded: css({\r\n opacity: '1'\r\n })\r\n }\r\n\r\n React.useEffect(() => {\r\n let timer = setTimeout(() => setLoaded(true), 500)\r\n return () => { clearTimeout(timer) }\r\n }, [])\r\n \r\n return
\r\n \r\n
\r\n}","export function isExternalLink(link){\r\n return link && (link.indexOf('https://') === 0 || link.indexOf('http://') === 0 || link.indexOf('://') === 0);\r\n}\r\n\r\nexport function getLinkFromElement(el){\r\n if (!el) return null;\r\n const linkEl = el.closest('a');\r\n //console.log(el, linkEl);\r\n if (linkEl){\r\n return linkEl.getAttribute('href');\r\n }\r\n return null;\r\n}\r\n\r\n\r\n// router utils\r\nexport function getLinkInfo(link) {\r\n if (!link) return null;\r\n\r\n const origin = typeof window !== `undefined` && window.location && window.location.origin;\r\n const currentPath = typeof window !== `undefined` && window.location && window.location.pathname;\r\n let linkFiltered = link.replace(origin, '').replace(currentPath + '#', '#');\r\n let linkLower = link.toLowerCase();\r\n\r\n //if (isStaticFile(linkLower)) return null;\r\n const isExternal = isExternalLink(linkFiltered);\r\n const isHash = linkFiltered.indexOf('#') === 0;\r\n const isTel = linkFiltered.indexOf('tel:') === 0;\r\n const isMailTo = linkFiltered.indexOf('mailto:') === 0;\r\n const type = (isHash && 'hash') || (isTel && 'tel') || (isMailTo && 'mailto') || \r\n (isStaticFile(linkLower) && 'static') || (isExternal && 'external') || 'internal';\r\n\r\n return { url: linkFiltered, type: type, ext: getExtension(link) };\r\n}\r\n\r\nvar exts = ['.pdf', '.jpg', '.png', '.gif', '.docx']\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\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}","//#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 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};\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};\r\n\r\nexport const contains = (list, fn) => {\r\n return findIndex(list, fn) >= 0;\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//#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\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 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//#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 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 } 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","//#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 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","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 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\n\r\nexport default { classNames, url, form, array, date, css, ui, money, text, random, object};","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 const isNZ = env.locale === 'nz'\n\n","import coreUtils from '../lib/utils-core';\nimport * as site from '../site/siteUtils';\n\nexport default { ...coreUtils, site };","import { useState, useEffect } from 'react';\r\nimport utils from '../../utils';\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\r\n const user = JSON.parse(localStorage.getItem('user'));\r\n let token = user && user.token;\r\n //console.log(user, token, request.options)\r\n if (token) {\r\n options.headers = options.headers || {}\r\n options.headers['Authorization'] = `Bearer ${token}`\r\n }\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 setErrors(['Error - ' + res.status + (res.statusText && (' - ' + res.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 //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 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 reset: () => {\r\n setStatus('ready')\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\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 )\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 = 10000;\r\nexport const MIN = -10000;\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', [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(from, to, pr, scale = [0, 1]) {\r\n //console.log(from, to, typeof from, typeof to)\r\n if (pr < scale[0]) return from;\r\n if (pr > scale[1]) return to;\r\n return from + (to - from) * ((pr - scale[0])/(scale[1] - scale[0]));\r\n}\r\n\r\nexport function transform(el, x, y) {\r\n el.style.transform = 'translate(' + x + ',' + y + ')';\r\n}\r\n\r\nexport function removeTransform(el) {\r\n\r\n}\r\n\r\n// requestAnimationFrame\r\n// const raf =\r\n// (window).requestAnimationFrame ||\r\n// (window).webkitRequestAnimationFrame ||\r\n// (window).mozRequestAnimationFrame ||\r\n// function (callback) {\r\n// (window).setTimeout(callback, 1000 / 60)\r\n// }\r\nexport function getScreenSize() {\r\n const w = utils.css.screenWidth()\r\n const h = utils.css.screenHeight()\r\n return { width: w, height: h };\r\n}\r\n","const holder = 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, holder)));\r\n return Promise.all(promises);\r\n}\r\n\r\nexport function loadedJs(url) {\r\n if (!holder[storeName]) return false;\r\n return holder[storeName][url] && holder[storeName][url].loaded\r\n}\r\n\r\nfunction loadScript(url) {\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 (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 //load script\r\n let script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = url;\r\n script.onload = () => {\r\n holder[storeName][url] = { loaded: true };\r\n resolve({ script: url, loaded: true, networkLoaded: true, status: 'Loaded' });\r\n };\r\n script.onerror = (error) => resolve({ script: url, loaded: false, status: 'Load failed' });\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n });\r\n}","import { useLayoutEffect } from 'react';\r\n//import useWindowScroll from '@react-hook/window-scroll';\r\nimport { au } from '../../components';\r\n\r\n/* background image height =\r\n + cutoff padding = always hidden padding - usually 10 px\r\n + panel height (desired parallax panel height)\r\n + padding height = panel height * padding height ratio\r\n + cutoff padding = always hidden padding - usually 10 px\r\n*/\r\n\r\nconst defaultSettings = {\r\n cutoffPadding: 10,\r\n speed: 15, // 5% of image/100px scroll\r\n //paddingHeightRatio: 0.3\r\n //screenSize\r\n}\r\n\r\nexport const ParallaxData = {\r\n settings: {\r\n screenSize: null\r\n },\r\n panels: [\r\n { selector: '.parallax', imageRatio: 1080 / 1920, panelHeight: 'auto' },\r\n ],\r\n elements: [],\r\n timeoutId: null\r\n}\r\n\r\nexport function useParallax() {\r\n const handleScroll = () => {\r\n //console.log('useParallax - scrolling')\r\n onScroll(ParallaxData);\r\n }\r\n\r\n const reset = () => {\r\n //console.log('useParallax - reset');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n }\r\n\r\n useLayoutEffect(() => {\r\n //console.log('useParallax - effect');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n if (typeof window !== `undefined`) {\r\n window.addEventListener('scroll', handleScroll)\r\n window.addEventListener('resize', reset)\r\n }\r\n return () => {\r\n //console.log('useParallax - removed');\r\n if (typeof window !== `undefined`) {\r\n window.removeEventListener('scroll', handleScroll)\r\n window.removeEventListener('resize', reset)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n return { reset };\r\n};\r\n\r\n// export function useParallax(opt) {\r\n// // const settings = Object.assign({}, defaultSettings, opt);\r\n\r\n// const [resetCounter, setResetCounter] = useState(0);\r\n// const [parallaxData,] = useState(ParallaxData);\r\n\r\n// //const scrollY = useWindowScroll(60 /*fps*/)\r\n// const reset = () => {\r\n// setResetCounter(resetCounter + 1);\r\n// }\r\n\r\n// const handleScroll = () => {\r\n// onScroll(parallaxData);\r\n// }\r\n\r\n// useLayoutEffect(() => {\r\n// console.log('useParallax - effect');\r\n\r\n// setTimeout(() => { init(parallaxData); handleScroll(); }, 300)\r\n\r\n// //const handleScroll = (): void => setThrottledScroll(getScrollY())\r\n// window.addEventListener('scroll', handleScroll)\r\n// window.addEventListener('resize', handleScroll)\r\n// return (): void => {\r\n// window.removeEventListener('scroll', handleScroll)\r\n// window.removeEventListener('resize', handleScroll)\r\n// }\r\n\r\n// // eslint-disable-next-line \r\n// }, [resetCounter]);\r\n// //console.log(scrollY, resetCounter)\r\n\r\n// return { reset };\r\n// };\r\n\r\nexport function init(data) {\r\n //console.log('parallax init');\r\n const screenSize = data.settings.screenSize = au.getScreenSize();\r\n data.settings = Object.assign({}, defaultSettings, data.settings)\r\n let cnt = 0;\r\n data.panels.forEach(panel => {\r\n const elements = document.querySelectorAll(panel.selector) || [];\r\n for (let i = 0; i < elements.length; i++) {\r\n cnt++;\r\n const el = elements[i];\r\n //const el = document.querySelector(panel.selector);\r\n //console.log(panel.selector, el)\r\n //if (!el) { panel.el = null; return; }\r\n const autoPanelHeight = !panel.panelHeight || panel.panelHeight === 'auto';\r\n const panelHeight = autoPanelHeight ? el.offsetHeight : parseFloat(panel.panelHeight);\r\n //console.log(autoPanelHeight, panelHeight)\r\n\r\n const calculated = { shadowHeight: 0, shadowWidth: 0, fromTop: 0, toTop: 0 };\r\n // calculated.shadowHeight = panelHeight * (1 + data.settings.paddingHeightRatio) + 2 * data.settings.cutoffPadding;\r\n // calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n // if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // // magnifying the background image to fix the full width of the browser\r\n // calculated.shadowWidth = data.settings.screenSize.width;\r\n // calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n // }\r\n\r\n const speed = data.settings.speed * (screenSize.width > 1000 ? 1 : 2) \r\n let baseHeight = data.settings.screenSize.width * panel.imageRatio > panelHeight ? data.settings.screenSize.width * panel.imageRatio : panelHeight\r\n baseHeight = baseHeight + (data.settings.screenSize.height + panelHeight) * (speed * 0.01)\r\n calculated.shadowHeight = baseHeight + 2 * data.settings.cutoffPadding;\r\n calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // magnifying the background image to fix the full width of the browser\r\n calculated.shadowWidth = data.settings.screenSize.width;\r\n calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n }\r\n\r\n calculated.fromTop = -data.settings.cutoffPadding;\r\n calculated.toTop = -calculated.shadowHeight + panelHeight + data.settings.cutoffPadding;\r\n\r\n if (!autoPanelHeight)\r\n (el).style.height = panel.panelHeight + 'px';\r\n\r\n (el).style.backgroundSize = calculated.shadowWidth + 'px ' + calculated.shadowHeight + 'px'\r\n\r\n //panel.el = el;\r\n panel.calculated = calculated;\r\n data.elements.push({ el: el, calculated: calculated });\r\n //console.log(panelHeight, baseHeight, calculated)\r\n }\r\n })\r\n\r\n //console.log('parallax init - ' + cnt)\r\n if (cnt === 0) {\r\n if (data.timeoutId) {\r\n try {\r\n if (typeof window !== `undefined`) { \r\n window.clearTimeout(data.timeoutId)\r\n }\r\n } catch(e){}\r\n }\r\n // reschedule\r\n if (typeof window !== `undefined`) { \r\n data.timeoutId = window.setTimeout(() => init(data), 500)\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function onScroll(data) {\r\n //console.log(data);\r\n data.elements.forEach(element => {\r\n if (!element.el) return;\r\n const pr = au.getScrollProgress(element.el).progress;\r\n //console.log(pr);\r\n\r\n const min = element.calculated.fromTop;\r\n const max = element.calculated.toTop;\r\n const top = au.prVal(min, max, pr, [0, 1]);\r\n //console.log(top);\r\n (element.el).style.backgroundPositionY = top + 'px'\r\n })\r\n\r\n}","import { useMemo } from 'react';\r\nimport { useParams, useLocation, useHistory, useRouteMatch, Redirect } from 'react-router-dom';\r\nimport queryString from 'query-string';\r\n\r\nexport function useRouter() {\r\n const params = useParams();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const match = useRouteMatch();\r\n\r\n // Return our custom router object\r\n // Memoize so that a new object is only returned if something changes\r\n return useMemo(() => {\r\n return {\r\n // For convenience add push(), replace(), pathname at top level\r\n navigate: history.push,\r\n push: history.push,\r\n Redirect: Redirect,\r\n replace: history.replace,\r\n pathname: location.pathname,\r\n path: location.pathname + location.hash + location.search,\r\n // Merge params and parsed query string into single \"query\" object\r\n // so that they can be used interchangeably.\r\n // Example: /:topic?sort=popular -> { topic: \"react\", sort: \"popular\" }\r\n query: {\r\n ...queryString.parse(location.search), // Convert string to object\r\n ...params\r\n },\r\n // Include match, location, history objects so we have\r\n // access to extra React Router functionality if needed.\r\n match,\r\n location,\r\n history\r\n };\r\n }, [params, match, location, history]);\r\n}","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 utils from '../../utils';\r\n\r\nexport function handleElementLink(el, externalHandler = (url) => {\r\n if (typeof window !== `undefined`) window.location.href = url;\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 //console.log(e, e.target);\r\n if (onClick) onClick(e);\r\n const processed = handleElementLink(e.target);\r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n //console.log(processed)\r\n }\r\n\r\n return utils.url.isExternalLink(to) ?\r\n goToLink(e)} {...other}>{children}\r\n :\r\n goToLink(e)} {...other}>{children}\r\n ;\r\n}\r\n","const variables = {\r\n familyBase: '\"Gotham\",sans-serif',\r\n familyHeader: '\"DIN Next LT Pro\",serif',\r\n\r\n primaryColor: '#c20f2f',\r\n fontColor: '#404040',\r\n bgColor: '#ebebeb',\r\n}\r\n\r\nexport default variables;","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\nexport { mq, mqMin, mqMax }","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 { css } from '@emotion/core'\r\nimport { mixin, mq } from '../../cssInJs'\r\n\r\nexport default {\r\n tiles: css(mq({\r\n marginLeft: [0, -5, null, -10],\r\n marginRight: [0, -5, null, -10],\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexWrap: 'wrap'\r\n })),\r\n tile: css(mq({\r\n flexBasis: ['50%', '33.33%', '25%', '25%', '20%', '16.66%'],\r\n padding: [0, 5, null, 10],\r\n cursor: 'pointer'\r\n })),\r\n tileImage: css({\r\n position: 'relative',\r\n display: 'block',\r\n ':after': { ...mixin.overlay() },\r\n ':hover, :focus': {\r\n ':after': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n }\r\n }\r\n }),\r\n tileIcon: css({\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n fontSize: 30,\r\n color: 'white',\r\n zIndex: 1\r\n })\r\n}","import React from 'react';\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport env from '../../env';\r\nimport utils from '../../utils';\r\nimport { useGet, ErrorPopup, Loading } from '../../components';\r\nimport style from './feedStyle';\r\nimport {FaRegCaretSquareRight, FaRegClone} from 'react-icons/fa';\r\n\r\nexport function InstagramFeed(props){\r\n const get = useGet();\r\n\r\n React.useEffect(() => {\r\n get.send(env.apiBase + `/api/instagram/GetInstagramFeeds`);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (get.loading()) {\r\n return \r\n } else if (get.hasErrors()) {\r\n return \r\n }\r\n\r\n console.log(get)\r\n const data = get.response;\r\n if (data.length === 0) return null\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Feeds({posts}) {\r\n const numOfTileLines = 2;\r\n const bp = utils.ui.getCurrentBreakpoint();\r\n const tilesPerLine = {xs:2, sm:3, md:4, lg:4, xl:5, xxl:6}\r\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 6);\r\n console.log(bp, numOfTileLines, numOfPost)\r\n const displayingPosts = posts.length > numOfPost ? posts.slice(0, numOfPost) : posts;\r\n\r\n return (\r\n
\r\n {displayingPosts.map((item, index) =>\r\n )}\r\n
\r\n )\r\n}\r\n\r\nfunction Feed({item}) {\r\n return (\r\n \r\n )\r\n}","import 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}","const initialState = {\r\n page: null,\r\n menu: null,\r\n popup: 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_STATE':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n throw new Error(\"Unexpected action\");\r\n }\r\n};\r\n\r\nexport { initialState, reducer };","import React, { createContext, useReducer, useContext, useEffect } from 'react';\r\nimport { initialState, reducer } from '../../store';\r\n\r\nconst StoreContext = createContext(initialState);\r\n\r\nconst StoreProvider = ({ children }) => {\r\n // Get state and dispatch from Reacts new API useReducer. \r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n //console.log('StoreProvider')\r\n // Log new state\r\n useEffect(() => {\r\n //console.log('-- new state', state);\r\n //console.trace();\r\n }, [state]);\r\n // Render state, dispatch and special case actions\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport { StoreContext, StoreProvider };\r\n\r\nexport const useStore = () => useContext(StoreContext);","import 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","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 cssClass = utils.classNames('cms_item', 'banner-item', 'bannerSize', item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n //console.log('item', bgUrl);\n // const titlePanel = captionTitle ? (\n // linkUrl ? (\n // \n //
\n //
) :\n // (\n //
\n // )\n // ) : null;\n \n const titlePanel = captionTitle ? (\n
\n ) : null;\n \n return (\n linkUrl ? (\n \n
\n {titlePanel &&
{titlePanel}
}\n
\n
\n ) : \n
\n {titlePanel &&
{titlePanel}
}\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 //const textColorTheme = cmsUtils.payload(item, 'TextColorTheme');\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\n const bgTheme = cmsUtils.payload(item, 'TextColorTheme') || 'white';\n //console.log(bgTheme)\n\n\n let bgUrl = null;\n if (imageUrl)\n bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\n\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '');\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n\n return (\n
\n {/*
*/}\n
\n {subItemsElts}\n
\n
\n );\n}\n","import React, { useLayoutEffect, useRef } from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\n\nimport { useRouter } from '../../../components';\n\nimport { handleElementLink } from '../../../components';\nimport env from '../../../env';\n\n//import { Document, Page } from 'react-pdf'\n//import { Document, Page } from 'react-pdf/dist/entry.webpack';\n\nexport function Html(props) {\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const { history } = useRouter();\n //console.log('item', item, cmsOption);\n\n let content = cmsOption.isCmsEdit? \n cmsUtils.payload(item, 'Content'): \n cmsUtils.payload(item, 'Content').replace(\"__version__\", \" PWA \"+ ver +\"\");\n\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n function handleClick(e) { \n \n let target = \"\";\n if(e.target.closest('a')){\n target = e.target.closest('a').getAttribute('target');\n }\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n \n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url)\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n }\n }\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n const buttons = htmlBlock.current.querySelectorAll('.button');\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i])\n }\n\n // const youtubes = htmlBlock.current.querySelectorAll('iframe[src*=\"youtube\"]');\n // console.log(youtubes)\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n\n }, [])\n\n return (\n
handleClick(e)}>
\n )\n}\n\n\nfunction restructureButton(el) {\n if (!el.querySelector('span')) {\n const span = document.createElement('span');\n span.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(span);\n }\n}","import 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\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n \n const cssClass = utils.classNames('cms_item', 'imagePanel', 'parallax', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const htmlBlock = React.useRef(null);\n const cssClass2 = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n const content = cmsUtils.payload(item, 'Content');\n\n return ( \n //data-cms-item-id={cmsOption.isCmsEdit && item.itemId} id={item.anchorName}\n
\n
\n
\n
\n );\n\n}","//import { css, keyframes } from '@emotion/core'\n//import { variables, mq } from 'cssInJs'\n\nimport { css } from '@emotion/core'\nimport { mq } from '../../cssInJs'\n\n\nexport default {\n pageTiles : css({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px'\n }),\n pageTile__tile : css(mq({\n flex: '0 0 100%',\n maxWidth: '100%',\n padding: '10px'\n })),\n\n tile__content : css({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n flexWrap: 'wrap',\n '&:hover' : {\n textDecoration: 'none',\n '& .pageTile__bsyc__content__details' : {\n backgroundColor : '#429b57',\n color: 'white',\n }\n }\n }),\n\n tile__bg : css(mq({\n height: '0',\n paddingTop: '30%',\n backgroundPosition: '50%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n flex: '1 1 300px',\n })),\n\n tile__details : css({\n overflow: 'hidden',\n flexGrow: '1',\n padding: '1.5rem',\n textAlign: 'center',\n width: '100%',\n bottom: '0',\n backgroundColor: 'rgba(255,255,255,.5)',\n //backgroundColor : '#77cf22',\n flex: '1 1 300px',\n transition: 'all .2s ease-in-out',\n color: '#3d3d3d',\n '& .pageTile__bsyc__container' : {\n position: 'relative',\n top: '44%',\n transform: 'translateY(-50%)',\n '& .pageTile__bsyc__title' : {\n fontFamily: 'proxima-soft, sans-serif',\n fontSize: '2rem',\n //textTransform: 'uppercase',\n fontWeight: '700',\n lineHeight: '1',\n margin: '0',\n paddingTop: '.5rem',\n paddingBottom: '.5rem',\n color:'inherit'\n },\n '& .pageTile__bsyc__desc' : {\n lineHeight: '1.3',\n fontSize: '.9rem',\n //color: '#3d3d3d',\n minHeight: '70px',\n color:'inherit'\n }\n }\n })\n}","//import React from 'react';\nimport cmsUtils from '../../cms/utils/cmsUtils';\nimport utils from '../../utils';\nimport { SiteLink } from '../../components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\n\nexport function PageTilesBsyc(props) {\n const item = props.item;\n //const detailHoverBgColor = props.detailHoverBgColor ? props.detailHoverBgColor : \"black\";\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\n const pageTileElts = pages.map((page, index) =>\n \n );\n\n //const cssClass = utils.classNames('cms_item', 'pageTiles tiles', item.cssClass || item.anchorName || '');\n const cssClass = utils.classNames('cms_item', 'pageTiles__bsyc', item.cssClass || item.anchorName || '');\n\n return (\n
\n {pageTileElts}\n
\n );\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nfunction Tile(props) {\n const page = props.page;\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n const screenSize = window.innerWidth;\n const index = props.idx;\n return (\n \n
\n \n { index % 2 === 0 || screenSize <= 550 ?
: null }\n
\n
\n
\n {page.pageTitle}\n
\n
\n {page.tileDesc || page.description}\n
\n
\n
\n { index % 2 !== 0 && screenSize >= 550 ?
: null }\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\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n\n const cssClass = utils.classNames('cms_item', 'single-banner', 'banner-item', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const captionTitle = cmsUtils.payload(item, 'CaptionTitle2') || cmsUtils.payload(item, 'CaptionTitle');\n const linkUrl = cmsUtils.payload(item, 'LinkUrl2') || cmsUtils.payload(item, 'LinkUrl');\n\n const titlePanel = captionTitle ? (\n linkUrl ? (\n
\n
) : (
)\n ) : null;\n\n return (\n
\n {titlePanel &&
{titlePanel}
}\n
\n );\n\n\n}\n","export function findControl(controlName, root) {\r\n return findControlTraverse(controlName, 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\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 }\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl)\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 //find: (name) => controls.find(name)\r\n }\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl)\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 utils from '../../utils';\r\n\r\nexport function hasRequiredValidator(control) {\r\n if (!control) return false;\r\n return !!control.findValidator('required')\r\n}\r\n\r\nexport function getNameForValidator(label, name) {\r\n return utils.text.toFieldName(label || name);\r\n}\r\n\r\nexport function getValidatorOptions(params) {\r\n const defaultOpt = { continueToValidate: false }\r\n return params ? { ...defaultOpt, ...params } : defaultOpt;\r\n}\r\n\r\nexport function createValidator(type, message, opt, validate) {\r\n const validator =\r\n {\r\n type: type,\r\n disabled: false,\r\n ...getValidatorOptions(opt),\r\n message: message,\r\n validate: validate\r\n }\r\n return validator;\r\n}","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Required(message = null, opt = null) {\r\n return createValidator('required', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return isEmpty(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' is required.')) : null\r\n })\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Email(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n 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\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 } 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, Email, Date: ValidateDate, PastDate, Length, validateControl\r\n}","import utils from '../../utils';\r\nimport React from 'react';\r\nimport { hasRequiredValidator } from './validatorHelper';\r\n\r\nexport function getLabel(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n return <>\r\n {label || utils.text.toFieldName(name)}\r\n {requiredMark && {requiredMark}}\r\n ;\r\n}\r\n\r\nexport function getLabelAsString(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n \r\n return (label || utils.text.toFieldName(name)) + (requiredMark ? requiredMark : '');\r\n}","import React from 'react';\r\n\r\nconst ValidationAlert = ({ errors }) => {\r\n if (!errors || errors.length === 0) return null;\r\n return
') }}>
\r\n}\r\n\r\nexport default ValidationAlert;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style } = 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 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\" + (errors && errors.length > 0 ? ' is-invalid' : '')} />\r\n
\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 } = 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} />\r\n \r\n
)}\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(value, optionValue) {\r\n if (optionValue === null || typeof optionValue === 'undefined') return false;\r\n return value === optionValue;\r\n}\r\n\r\nexport default RadioListInput;","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nconst CheckboxListInput = ({ control, handleChange, formOption }) => {\r\n const { name, label, value, errors, style, options } = 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} />\r\n \r\n
)}\r\n\r\n
\r\n
\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 } = 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 return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n \r\n \r\n
\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 } = 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' : '')} />\r\n
\r\n \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\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, 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')\r\n Component = TextInput;\r\n else if (control.type === \"dob\")\r\n Component = DateSeparateInput;\r\n else\r\n Component = Components[capitalize(control.type) + 'Input'];\r\n\r\n return Component;\r\n}\r\n\r\n","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextareaInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style } = 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 ? getLabelAsString(control, formOption) : null;\r\n const valueStr = value === 0 ? 0 : (value || \"\");\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default TextareaInput;","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nconst CheckboxInput = ({ control, handleChange, formOption }) => {\r\n const { name, label, type, value, errors, style } = 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 \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default CheckboxInput;","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 } = 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 \r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SelectInput;\r\n\r\n","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 _renderControl(control, handleChange, formOption) {\r\n if (control === null) return null;\r\n let Component = getSiteControl(control, formOption) || getControl(control, formOption);\r\n if (Component === null) return null;\r\n return ;\r\n}\r\n\r\n\r\nexport function renderControl(formRoot, name, handleChange, formOption) {\r\n //console.log(formRoot, name);\r\n const control = formModelHelper.findControl(name, formRoot);\r\n //console.log(control, formRoot, name, handleChange, formOption)\r\n if (control) {\r\n return _renderControl(control, handleChange, formOption);\r\n }\r\n}\r\n\r\nexport default { renderControl }","import validators from './validators';\r\n\r\nexport function validate(root, validateOpt = {}) {\r\n //console.log({...{ triggeredByChange: false }, ...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 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 = { ...{ template: 'bootstrap', usePlaceholder: false, requiredMark: '*' }, ...option };\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\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\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 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 };","//#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//#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 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('enquiry')}
\n
\n
\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 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 * as yt from './iframeApi';\r\nimport { FiVolumeX, FiVolume2 } from 'react-icons/fi';\r\nimport { FaRegPlayCircle } from 'react-icons/fa';\r\nimport ModalVideo from 'react-modal-video'\r\n\r\n\r\nexport function YoutubeBannerMobilePopup(props) {\r\n //const youtubeBanner = 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 //let countPlayed = 0;\r\n const canPlayVideo = (typeof window !== `undefined` && typeof props.canPlayVideo === `undefined`)? window.innerWidth >= 1200 : !!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 let player = null;\r\n if (canPlayVideo) {\r\n yt.loadApi((loadJs) => {\r\n //console.log('yt api', playerId, loadJs)\r\n const init = () => {\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 player.playVideo();\r\n } else {\r\n setPlayerStatus('finished');\r\n }\r\n break;\r\n default:\r\n }\r\n },\r\n 'onReady': (e) => {\r\n //console.log('onReady');\r\n player.mute();\r\n player.playVideo();\r\n setTimeout(() => setPlayerStatus('loaded'), 1000)\r\n },\r\n 'onError': (e) => { console.log(e) }\r\n }\r\n });\r\n\r\n setYtPlayer(player);\r\n }\r\n }\r\n\r\n loadJs? init() : setTimeout(init, 100)\r\n })\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n const youtubeBannerRef = React.useCallback(el => {\r\n setPlayerSize(getSize(el));\r\n }, []);\r\n\r\n function soundToggle() {\r\n if (ytPlayer){\r\n if (muted) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.unMute();\r\n ytPlayer.playVideo();\r\n setMuted(false);\r\n } else {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.mute();\r\n ytPlayer.playVideo();\r\n setMuted(true);\r\n }\r\n }\r\n }\r\n\r\n function playVideo() {\r\n setPopupOpened(true)\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n {canPlayVideo && playerSize && }\r\n {canPlayVideo && playerStatus === 'loaded' &&
\r\n {muted? : }\r\n
}\r\n\r\n {!canPlayVideo &&
\r\n \r\n
}\r\n
\r\n setPopupOpened(false)} />\r\n \r\n );\r\n}\r\n\r\nfunction getSize(container) {\r\n const containerSize = container ? { w: container.offsetWidth, h: container.offsetHeight } : { w: window.innerWidth, h: window.innerHeight }\r\n const overSize = 1;\r\n const rate = 9 / 16;\r\n const w = containerSize.w * overSize;\r\n const h = containerSize.h * overSize;\r\n const size = { width: w, height: w * rate, left: 0, top: 0 };\r\n if (size.height < h) {\r\n // stretch horizontally\r\n size.height = h;\r\n size.width = h / rate;\r\n }\r\n\r\n //console.log(size)\r\n size.left = -(size.width - containerSize.w) / 2;\r\n size.top = -(size.height - containerSize.h) / 2;\r\n return size;\r\n}\r\n","import React from 'react';\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 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\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';\n// import { Item } from 'cms/items/item';\n// import { SiteLink } from 'shared/link/siteLink';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { YoutubeEmbed } from '../../../components';\n\nexport function YoutubeEmbedded(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\n const cssClass = utils.classNames('cms_item', 'youtubeEmbedded', item.cssClass || item.anchorName || '');\n\n //console.log(window.innerWidth, canPlayVideo())\n\n return (\n
\n \n
\n );\n}\n","import React from 'react';\nimport env from '../../env';\nimport { SiteLink} from '../../components';\nimport { usePost } from '../../components';\nimport { ErrorPopup, Loading } from '../../components';\nimport { useRouter } from '../../components';\n\nexport function SearchResult(props) {\n \n const { query } = useRouter();\n const post = usePost();\n const keyword = query.q;\n //console.log(keyword);\n\n React.useEffect(() => {\n post.send(env.apiBase + '/api/search/search', { keyword: keyword });\n // eslint-disable-next-line\n }, [keyword]);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n //console.log(\"post\", post)\n const data = post.response;\n //const products = data.products;\n const pages = data.pages;\n\n if (pages.length === 0) return (\n
\n No result found.\n
\n )\n return (\n <>\n {/* {products.length > 0 &&
\n

Products

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

Pages

\n \n
}\n \n );\n}\n\n// function ProductList({products}) {\n// return (\n//
\n// {products.map((product, index) =>\n// \n// )}\n//
\n// );\n// }\n\nfunction PageList({pages}) {\n return (\n
\n {pages.map((page, index) =>\n
\n
\n {page.pageTitle}\n
\n
\n
\n )}\n
\n );\n}","const comps = [\n {compId: 11, compCode: 'CS.individual', compName: 'CentreState Individual', compPath:'/tipping/individual' },\n {compId: 12, compCode: 'CS.sportingclub', compName: 'CentreState Sportingclub', compPath:'/tipping/sportingclub' },\n {compId: 13, compCode: 'CS.corvel', compName: 'CentreState Gazebo', compPath:'/tipping/gazebo' },\n {compId: 14, compCode: 'CS.wanderers', compName: 'CentreState Wanderers', compPath:'/tipping/wanderers' },\n]\n\n\nexport function getComp(compId) {\n const comp = comps.filter(x => x.compId === compId);\n return comp[0];\n}\n\nexport function setSession(sessionToken) {\n localStorage.setItem('tippingSession', sessionToken);\n}\n\nexport function getSession(sessionToken) {\n return localStorage.getItem('tippingSession');\n}\n\nexport function setTippingCompId(sessionToken) {\n localStorage.setItem('tippingCompId', sessionToken);\n}\n\nexport function getTippingCompId(sessionToken) {\n return localStorage.getItem('tippingCompId');\n}","import React from 'react';\nimport env from '../../../env';\nimport { useForm } from '../../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../../components';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getModel } from './formModel';\nimport { useRouter } from '../../../components';\nimport { setSession, setTippingCompId } from '../tippingCommon';\n\nexport function TippingSignup({ compId }) {\n\n const { Redirect } = useRouter();\n const model = getModel({compId: compId});\n const form = useForm(model);\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(), compId: compId };\n console.log(value);\n post.send(env.apiBase + \"/api/tipping/signup\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n const data = post.response;\n console.log(data, compId);\n setSession(data.results.response.sessionToken);\n setTippingCompId(compId);\n return \n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n

Account

\n
\n
{render('username')}\n
Only letters and/or numbers may be used in a username.(Minimum 3 characters, no spaces)
\n
{render('email')}
\n
\n
\n
{render('password')}\n
Minimum 7 characters
\n
\n
{render('confirmPassword')}
\n
\n

Profile

\n
\n
{render('firstName')}
\n
{render('surname')}
\n
\n {compId !== 14 &&
\n
\n
{render('address')}{render('address2')}
\n
{render('suburb')}
\n
{render('state')}
\n
\n
\n
{render('phone')}
\n
{render('mobile')}
\n
\n
}\n\n

Tipping

\n
\n
{render('favoriteTeam')}
\n {compId !== 14 &&
{render('favoriteLocalTeam')}
}\n
\n {compId === 11 &&
\n
\n
{render('tradingName')}\n
Trading name you use when dealing with Centre State Exports.
\n
\n
{render('ngrNumber')}\n
Max 4 people using one number.
\n
\n
}\n {compId === 12 &&
\n
\n
{render('nominatingFarmer')}\n
Name of farmer nominating the team
\n
\n
{render('ngrNumber')}\n
NGR number of farmer nominating the team
\n
\n
\n
{render('teamName')}\n
\n Name of team you represent
\n
\n
{render('abn')}\n
Certificate of Incorporation / ABN number of Club
\n
\n
}\n
\n
\n
\n \n \n \n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../../lib/form';\n\nexport function getModel(data) {\n\n const teams = [{ name: \"Select...\", value: \"\" }, { name: \"Adelaide Crows\", value: \"Adelaide Crows\" }, { name: \"Brisbane Lions\", value: \"Brisbane Lions\" }, { name: \"Carlton\", value: \"Carlton\" }, { name: \"Collingwood\", value: \"Collingwood\" }, { name: \"Essendon\", value: \"Essendon\" }, { name: \"Fremantle\", value: \"Fremantle\" }, { name: \"Geelong Cats\", value: \"Geelong Cats\" }, { name: \"Gold Coast Suns\", value: \"Gold Coast Suns\" }, { name: \"GWS GIANTS\", value: \"GWS GIANTS\" }, { name: \"Hawthorn\", value: \"Hawthorn\" }, { name: \"Melbourne\", value: \"Melbourne\" }, { name: \"North Melbourne\", value: \"North Melbourne\" }, { name: \"Port Adelaide\", value: \"Port Adelaide\" }, { name: \"Richmond\", value: \"Richmond\" }, { name: \"St Kilda\", value: \"St Kilda\" }, { name: \"Sydney Swans\", value: \"Sydney Swans\" }, { name: \"West Coast Eagles\", value: \"West Coast Eagles\" }, { name: \"Western Bulldogs\", value: \"Western Bulldogs\" }]\n const model = fb.group({\n username: [data.username || '', [validators.Required()], { label: 'Username', type: 'text' }],\n password: [data.password || '', [validators.Required(), validators.Length('Min 7 characters', {min: 7})], { label: 'Password', type: 'password' }],\n confirmPassword: [data.confirmPassword || '', [validators.Required()], { label: 'Confirm Password', type: 'password' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\n\n firstName: [data.firstName || '', [validators.Required()], { label: 'First Name', type: 'text' }],\n surname: [data.surname || '', [validators.Required()], { label: 'Surname', type: 'text' }],\n address: [data.address || '', [], { label: 'Address', type: 'text' }],\n address2: [data.address2 || '', [], { label: null, type: 'text' }],\n suburb: [data.suburb || '', [], { label: 'City, Suburb or Town', type: 'text' }],\n state: [data.state || '', [], { label: 'State', type: 'text' }],\n phone: [data.phone || '', [], { label: 'Phone', type: 'text' }],\n mobile: [data.mobile || '', [], { label: 'Mobile Phone', type: 'text' }],\n\n favoriteTeam: [data.favoriteTeam || '', [], { label: 'Favorite Team', type: 'select', options: teams }],\n favoriteLocalTeam: [data.favoriteLocalTeam || '', [], { label: 'Favorite Local Team', type: 'text' }],\n tradingName: [data.tradingName || '', [], { label: 'Trading Name', type: 'text' }],\n ngrNumber: [data.ngrNumber || '', data.compId === 13 || data.compId === 14? [] : [validators.Required()], { label: 'NGR number', type: 'text' }],\n\n nominatingFarmer: [data.nominatingFarmer || '', [], { label: 'Nominating Farmer', type: 'text' }],\n teamName: [data.teamName || '', [], { label: 'Team Name', type: 'text' }],\n abn: [data.abn || '', [], { label: 'ABN', type: 'text' }],\n \n });\n\n return model;\n}","import React from 'react';\nimport env from '../../../env';\nimport { useForm } from '../../../form';\nimport { SiteLink} from '../../../components';\nimport { usePost } from '../../../components';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getModel } from './formModel';\nimport { useRouter } from '../../../components';\nimport { setSession, setTippingCompId } from '../tippingCommon';\n\nexport function TippingLogin({ compId }) {\n\n const { Redirect } = useRouter();\n const model = getModel({});\n const form = useForm(model);\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(), compId: compId };\n //console.log(value);\n post.send(env.apiBase + \"/api/tipping/login\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n // form.reset(model)\n // setSendingStatus(null)\n \n const data = post.response;\n console.log(data, compId);\n setSession(data.results.response.sessionToken);\n setTippingCompId(compId);\n return \n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('username')}
\n
\n
\n
{render('password')}
\n
\n
\n
\n
\n \n \n \n {post.status === 'done' && 'Successfully sent!'}\n
\n
\n
\n
\n Forgot your password?\n
\n
\n Are you having trouble logging in? contact us now \n {compId === 14?\n roger@centrestateexports.com.au:\n footytips@centrestateexports.com.au\n }\n
\n
\n );\n}","import { fb, validators } from '../../../lib/form';\n\nexport function getModel(data) {\n const model = fb.group({\n username: [data.username || '', [validators.Required()], { label: 'Username', type: 'text' }],\n password: [data.password || '', [validators.Required()], { label: 'Password', type: 'password' }],\n \n });\n\n return model;\n}","import React from 'react';\nimport env from '../../../env';\nimport { useForm } from '../../../form';\nimport { SiteLink } from '../../../components';\nimport { usePost } from '../../../components';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getModel } from './formModel';\nimport { useRouter } from '../../../components';\n\nexport function TippingRecoverPassword() {\n\n // from query\n const { query } = useRouter();\n const compId = query.comp || '';\n\n const model = getModel({});\n const form = useForm(model);\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n if (!compId) {\n return
\n

Sorry, we can't identify the competition. Please use link in the login pages.

\n

Go back to the tipping main.

\n
\n }\n\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), compId: compId };\n console.log(value);\n post.send(env.apiBase + \"/api/tipping/recoverPassword\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n

Password Recovery

\n

Forgot Your Password?

\n

Enter your User Name to receive your password by email.

\n\n
\n
\n
{render('username')}
\n
\n
\n
\n
\n \n \n \n {post.done() && Successfully sent! Check your email box.}\n
\n
\n
\n\n
\n
\n );\n}","import { fb, validators } from '../../../lib/form';\n\nexport function getModel(data) {\n const model = fb.group({\n username: [data.username || '', [validators.Required()], { label: 'Username', type: 'text' }],\n });\n\n return model;\n}","import { css } from '@emotion/core'\nimport { variables, mq } from '../../../cssInJs'\n\nconst team = css(mq({\n width: '40%',\n display: 'flex',\n flexDirection: ['column',null, 'row'],\n alignItems: [null, null, 'center'],\n justifyContent: 'space-between',\n}))\n\nconst teamIcon = css(mq({\n width: [50, 50, 80],\n marginRight: '1rem',\n}))\n\nconst enterInput = css(mq({\n flex: ['0 1 auto', null, '1 1 auto'],\n 'input': {\n marginRight: 4\n }\n}))\n\nexport default {\n roundHeader: css(mq({\n display: 'flex',\n flexWrap: ['wrap', null, 'nowrap']\n })),\n roundHeaderCell: css(mq({\n flex: ['0 0 2rem', null, '1 0 auto'],\n display: 'inline-block',\n background: '#eee',\n cursor: 'pointer',\n padding: ['0.2rem'],\n textAlign: 'center',\n marginRight: '1px',\n marginBottom: '1px',\n })),\n roundHeaderCellCurrent: css({\n background: variables.primaryColor,\n color: 'white',\n }),\n day: css({\n backgroundColor: variables.primaryColor,\n color: '#fff',\n padding: '.3em .8em',\n fontSize: '1.1rem',\n fontWeight: 'bold',\n marginTop: '0.5em',\n }),\n venue: css({\n fontSize: '0.8rem',\n color: '#949494',\n textTransform: 'uppercase',\n borderBottom: 'solid 1px #ddd',\n padding: '0.1rem 0.3rem',\n }),\n game: css({\n background: 'white',\n padding: '0.5rem',\n margin: '5px 0',\n '&:nth-of-type(2n)': {\n background: '#f6f6f6'\n }\n }),\n teams: css(mq({\n display: 'flex',\n alignItems: [null, null, 'center'],\n padding: '0.5rem',\n justifyContent: 'space-between',\n })),\n home: team,\n homeIcon: teamIcon,\n homeInput: enterInput,\n away: team,\n awayIcon: teamIcon,\n awayInput: enterInput,\n draw: css(team, {\n width: '4rem'\n }),\n drawInput: enterInput,\n\n teamName: css({\n fontWeight: 'bold',\n }),\n teamHelp: css(mq({\n display: ['block', null, null, 'inline'],\n marginLeft: ['1rem', null, null, 0],\n fontSize: '0.75rem',\n fontWeight: 'normal'\n }))\n\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './roundStyle';\nimport { Fragment } from 'react';\nimport env from '../../../env';\nimport { usePost } from '../../../components';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getSession } from '../tippingCommon';\n\nexport function Round({ compRound, roundChanged, valueChanged }) {\n const post = usePost();\n\n const sessionKey = getSession();\n console.log('compRound', compRound)\n const days = Array.from(new Set(compRound.games.map(x => x.gameDate)))\n //console.log(days)\n\n function tip(e, gameId) {\n //console.log(e.target.value);\n valueChanged(e.target.value, gameId)\n }\n\n \n function onSubmit(e) {\n console.log(compRound);\n\n const value = {\n compRoundId: compRound.compRoundId,\n games: compRound.games.map(x => { return { gameId: x.gameId, marginVal: x.marginVal, winTeamId: x.winTeamId } })\n }\n post.send(env.apiBase + \"/api/tipping/saveTips\", {sessionToken: sessionKey, compRound: value});\n }\n\n const teamIcon = path => path.replace('/core/jabatippingclient_3_0/img/teamicon', '/dist/tipping/teamicon').replace('.jpg', '.png')\n\n return (\n \n
\n {compRound.roundHeaders.map(x => )}\n
\n {days.map((day, index) => {\n const games = compRound.games.filter(x => x.gameDate === day);\n //console.log(games)\n return
\n
{day}
\n {games.map(game =>
\n
VENUE: {game.venue}, {game.gameTime} {game.gameId >= 1361 ? \"(ACST)\" : \"(ACDT)\"}
\n
\n
\n
{game.homeTeamName}
\n
\n \n
\n
\n
\n
{game.awayTeamName}
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n
)}\n\n
\n })}\n\n {!compRound.viewMode && \n
\n
\n
\n \n \n {post.done() && Successfully Saved!}\n
\n
\n
\n }\n
\n );\n}\n\nfunction RoundHeader({ round, currentRoundId, roundChanged }) {\n const current = round.compRoundId === currentRoundId ? style.roundHeaderCellCurrent : null;\n return
roundChanged(round.compRoundId)}>\n {round.roundName === '0' ? \"OR\" : round.roundName}\n
\n}","/** @jsx jsx */\nimport { jsx, css } from '@emotion/core'\n//import React from 'react';\nimport { SiteLink } from '../../components';\nimport { setSession } from './tippingCommon';\nimport { useRouter } from '../../components';\n\n\nconst style = {\n tippingMenu: css({\n margin: '1.5rem 0',\n 'a': {\n marginRight: '0.5rem',\n paddingRight: '0.5rem',\n borderRight: 'solid 1px #bbb',\n '&:last-of-type': {\n border: 'none'\n }\n }\n }),\n current: css({\n fontWeight: 'bold',\n })\n} \n\nexport function TippingMenu({current}) {\n const { navigate } = useRouter();\n\n function logout(e){\n e.preventDefault();\n setSession(null);\n navigate('/footy-tips')\n }\n\n return (\n
\n ENTER TIP\n REVIEW STANDING\n {/* PROFILE */}\n RESET PASSWORD\n LOGOUT\n
\n );\n}","import React from 'react';\nimport env from '../../../env';\nimport { usePost } from '../../../components';\nimport { Loading, ErrorPopup } from '../../../components';\nimport { getSession } from '../tippingCommon';\nimport { Round } from './round';\nimport utils from '../../../utils';\nimport { TippingMenu } from '../menu';\n\nexport function EnterTip({ compId }) {\n \n const [currentRoundId, setCurrentRoundId] = React.useState(0);\n const [compRound, setCompRound] = React.useState(null);\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n const sessionKey = getSession();\n\n React.useEffect(() => {\n //console.log('useEffect',currentRoundId)\n post.send(env.apiBase + \"/api/tipping/gettips\", {sessionToken: sessionKey, compRoundId: currentRoundId});\n setSendingStatus('pending')\n // eslint-disable-next-line\n }, [currentRoundId]);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n if (post.done() && sendingStatus === 'pending') {\n setSendingStatus(null)\n const data = post.response;\n setCompRound(data.results.response.compRound);\n }\n\n function roundChanged(roundId) {\n setCurrentRoundId(roundId)\n }\n\n function valueChanged(teamId_, gameId) {\n const teamId = parseInt(teamId_)\n //console.log(teamId, gameId)\n\n const game = utils.array.find(compRound.games, x => x.gameId === gameId)\n game.winTeamId = teamId;\n setCompRound({...compRound});\n }\n\n return (\n
\n \n \n
\n );\n}\n","import React from 'react';\nimport env from '../../../env';\nimport { usePost } from '../../../components';\nimport { Loading, ErrorPopup } from '../../../components';\nimport { getSession } from '../tippingCommon';\nimport { TippingMenu } from '../menu';\nimport './review.scss';\n\nexport function ReviewStanding({compCode}) {\n \n const [sendingStatus, setSendingStatus] = React.useState(null);\n const [standing, setStanding] = React.useState('');\n const post = usePost();\n\n const sessionKey = getSession();\n\n React.useEffect(() => {\n //console.log('useEffect',currentRoundId)\n post.send(env.apiBase + \"/api/tipping/getStanding\", {sessionToken: sessionKey, compCode: compCode});\n setSendingStatus('pending')\n // eslint-disable-next-line\n }, []);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n if (post.done() && sendingStatus === 'pending') {\n setSendingStatus(null)\n const data = post.response;\n setStanding(data.results.response.rank);\n }\n\n return (\n
\n {!compCode && }\n
\n
\n );\n}\n","import React from 'react';\nimport env from '../../../env';\nimport { useForm } from '../../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../../components';\nimport { Button, ErrorMessage } from '../../../components';\nimport { getModel } from './formModel';\nimport { TippingMenu } from '../menu';\nimport { getSession } from '../tippingCommon';\n\nexport function TippingChangePassword() {\n\n // /const { navigate } = useRouter();\n const model = getModel({});\n const form = useForm(model);\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n const sessionKey = getSession();\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), sessionToken: sessionKey };\n console.log(value);\n post.send(env.apiBase + \"/api/tipping/changePassword\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n \n
\n
\n
{render('currentPassword')}
\n
\n
\n
{render('password')}\n
Minimum 7 characters
\n
\n
{render('confirmPassword')}
\n
\n
\n
\n
\n \n \n \n {post.done() && Successfully Changed!}\n
\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../../lib/form';\n\nexport function getModel(data) {\n const model = fb.group({\n currentPassword: [data.currentPassword || '', [validators.Required()], { label: 'Current Password', type: 'password' }],\n password: [data.password || '', [validators.Required(), validators.Length('Min 7 characters', {min: 7})], { label: 'New Password', type: 'password' }],\n confirmPassword: [data.confirmPassword || '', [validators.Required()], { label: 'Confirm Password', type: 'password' }],\n });\n\n return model;\n}","import React from 'react';\nimport env from '../../../env';\nimport { usePost } from '../../../components';\nimport { Loading, ErrorPopup } from '../../../components';\nimport { getSession } from '../tippingCommon';\nimport './tippingText.scss';\n\nimport { useRouter } from '../../../components';\nimport { handleElementLink } from '../../../components';\n\nexport function TippingText({compCode, textType}) {\n \n const [sendingStatus, setSendingStatus] = React.useState(null);\n const [text, setText] = React.useState('');\n const post = usePost();\n const { history } = useRouter();\n\n const sessionKey = getSession();\n\n React.useEffect(() => {\n //console.log('useEffect',currentRoundId)\n post.send(env.apiBase + \"/api/tipping/getText\", {sessionToken: sessionKey, compCode: compCode, textType: textType });\n setSendingStatus('pending')\n // eslint-disable-next-line\n }, []);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n if (post.done() && sendingStatus === 'pending') {\n setSendingStatus(null)\n const data = post.response;\n setText(data.results.response.text);\n }\n\n \n function handleClick(e) { \n \n let target = \"\";\n if(e.target.closest('a')){\n target = e.target.closest('a').getAttribute('target');\n }\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n \n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url)\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n }\n }\n\n return (\n
handleClick(e)}>
\n );\n}\n","import React from 'react';\nimport env from '../../env';\nimport { useForm } from '../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../components';\nimport { Button, ErrorMessage } from '../../components';\nimport { getModel } from './formModel';\n\nexport function PriceUpdate() {\n\n const model = getModel({});\n const form = useForm(model);\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() };\n console.log(value);\n post.send(env.apiBase + \"/api/form/priceupdate\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('ngrNumber')}
\n
\n
\n
{render('tradingName')}
\n
\n
\n
{render('contactPerson')}
\n
\n
\n
{render('phone')}
\n
\n
\n
{render('products')}
\n
\n
\n
{render('productOther')}
\n
\n
\n
{render('deliveryTerminal')}
\n
\n\n

SMS Service

\n
\n
{render('smsService')}\n {render('mobile')}\n
\n
\n {/*

Fax Service

\n
\n
{render('faxService')}\n {render('fax')}\n
\n
*/}\n

Email Service

\n
\n
{render('emailService')}\n {render('email')}\n
\n
\n\n\n
\n
\n
\n \n \n \n {post.done() && Successfully Sent!}\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../lib/form';\n\nexport function getModel(data) {\n\n const productList = [\n 'Canola', 'Beans', 'Barley', 'Peas', 'Lentils', 'Wheat'\n ].map(x => { return { name: x, value: x } })\n\n const subscribeList = [\n 'Subscribe', 'Un-Subscribe'\n ].map(x => { return { name: x, value: x } })\n\n const model = fb.group({\n ngrNumber: [data.ngrNumber || '', [validators.Required()], { label: 'NGR number', type: 'text' }],\n tradingName: [data.tradingName || '', [validators.Required()], { label: 'Trading name', type: 'text' }],\n contactPerson: [data.contactPerson || '', [validators.Required()], { label: 'Contact person', type: 'text' }],\n phone: [data.phone || '', [validators.Required()], { label: 'Telephone', type: 'text' }],\n\n products: [data.products || '', [], { label: 'Pricing you are interested in', type: 'checkboxList', \n options: productList, style: { inline: true } }],\n\n productOther: [data.productOther || '', [], { label: 'Other(please list)', type: 'text' }],\n deliveryTerminal: [data.deliveryTerminal || '', [validators.Required()], { label: 'Closest Delivery Terminal (Adelaide, Portland , Lincoln, Wallaroo etc)', type: 'text' }],\n \n smsService: [data.smsService || 'Subscribe', [], { label: null, type: 'radioList', options: subscribeList, style: { inline: true } }],\n //faxService: [data.faxService || 'Subscribe', [], { label: null, type: 'radioList', options: subscribeList, style: { inline: true } }],\n emailService: [data.emailService || 'Subscribe', [], { label: null, type: 'radioList', options: subscribeList, style: { inline: true } }],\n \t\t\n email: [data.email || '', [validators.Email()], { label: 'Email address', type: 'email' }],\n //fax: [data.fax || '', [], { label: 'Fax number', type: 'text' }],\n mobile: [data.mobile || '', [], { label: 'Mobile number', type: 'text' }],\n \n });\n\n return model;\n}","import React from 'react';\nimport env from '../../env';\nimport { useForm } from '../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../components';\nimport { Button, ErrorMessage } from '../../components';\nimport { getModel } from './formModel';\n\nexport function PriceUpdateSimple() {\n\n const model = getModel({});\n const form = useForm(model);\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() };\n console.log(value);\n post.send(env.apiBase + \"/api/form/priceupdatesimple\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('ngrNumber')}
\n
\n
\n
{render('tradingName')}
\n
\n
\n
{render('contactPerson')}
\n
\n
\n
{render('mobile')}
\n
\n
\n
{render('email')}
\n
\n
\n
{render('smsService')}
\n
\n
\n
{render('emailService')}
\n
\n\n\n\n
\n
\n
\n \n \n \n {post.done() && Successfully Sent!}\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../lib/form';\n\nexport function getModel(data) {\n const subscribeList = [\n 'Subscribe', 'Un-Subscribe'\n ].map(x => { return { name: x, value: x } })\n\n const model = fb.group({\n ngrNumber: [data.ngrNumber || '', [validators.Required()], { label: 'NGR number', type: 'text' }],\n tradingName: [data.tradingName || '', [validators.Required()], { label: 'Trading name', type: 'text' }],\n contactPerson: [data.contactPerson || '', [validators.Required()], { label: 'Contact name', type: 'text' }],\n mobile: [data.mobile || '', [validators.Required()], { label: 'Mobile number', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email address', type: 'email' }],\n \n smsService: [data.smsService || 'Subscribe', [], { label: 'SMS Service', type: 'radioList', options: subscribeList, style: { inline: true } }],\n emailService: [data.emailService || 'Subscribe', [], { label: 'Email Service', type: 'radioList', options: subscribeList, style: { inline: true } }],\n \n });\n\n return model;\n}\n","import React from 'react';\nimport env from '../../env';\nimport { useForm } from '../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../components';\nimport { Button, ErrorMessage } from '../../components';\nimport { getModel } from './formModel';\n\nexport function PaymentPaperwork() {\n\n const model = getModel({});\n const form = useForm(model);\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() };\n console.log(value);\n post.send(env.apiBase + \"/api/form/paymentpaperwork\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('ngrNumber')}
\n
\n
\n
{render('tradingName')}
\n
\n
\n
{render('contactPerson')}
\n
\n
\n
{render('paymentDate')}
\n
\n
\n
{render('paymentAmount')}
\n
\n
\n
{render('email')}
\n
\n
\n
{render('paymentNumber')}
\n
\n
\n
\n
\n \n \n \n {post.done() && Successfully Sent!}\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../lib/form';\n\nexport function getModel(data) {\n\n const model = fb.group({\n ngrNumber: [data.ngrNumber || '', [validators.Required()], { label: 'NGR number', type: 'text' }],\n tradingName: [data.tradingName || '', [validators.Required()], { label: 'Trading name', type: 'text' }],\n contactPerson: [data.contactPerson || '', [validators.Required()], { label: 'Contact name', type: 'text' }],\n paymentDate: [data.paymentDate || '', [], { label: 'Payment date', type: 'text' }],\n paymentAmount: [data.paymentAmount || '', [], { label: 'Payment amount ', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email address', type: 'email' }],\n\n paymentNumber: [data.paymentNumber || '', [], { label: 'Payment/invoice number', type: 'text' }],\n\n });\n\n return model;\n}\n","import React from 'react';\nimport env from '../../env';\nimport { useForm } from '../../form';\n// import { SiteLink} from '../../components';\nimport { usePost } from '../../components';\nimport { Button, ErrorMessage } from '../../components';\nimport { getModel } from './formModel';\n\nexport function ContractPaperwork() {\n\n const model = getModel({});\n const form = useForm(model);\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() };\n console.log(value);\n post.send(env.apiBase + \"/api/form/contractPaperwork\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n if (post.done() && sendingStatus === 'pending') {\n form.reset(model)\n setSendingStatus(null)\n }\n\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('ngrNumber')}
\n
\n
\n
{render('tradingName')}
\n
\n
\n
{render('contactPerson')}
\n
\n
\n
{render('contractNumber')}
\n
\n
\n
{render('contractDate')}
\n
\n
\n
{render('grade')}
\n
\n
\n
{render('tonnes')}
\n
\n
\n
{render('email')}
\n
\n
\n
\n
\n \n \n \n {post.done() && Successfully Sent!}\n
\n
\n
\n
\n );\n}","import { fb, validators } from '../../lib/form';\n\nexport function getModel(data) {\n\n const model = fb.group({\n ngrNumber: [data.ngrNumber || '', [validators.Required()], { label: 'NGR number', type: 'text' }],\n tradingName: [data.tradingName || '', [validators.Required()], { label: 'Trading name', type: 'text' }],\n contactPerson: [data.contactPerson || '', [validators.Required()], { label: 'Contact name', type: 'text' }],\n contractNumber: [data.contractNumber || '', [], { label: 'Contract number', type: 'text' }],\n contractDate: [data.contractDate || '', [], { label: 'Contract date', type: 'text' }],\n grade: [data.grade || '', [], { label: 'Grade', type: 'text' }],\n tonnes: [data.tonnes || '', [], { label: 'Tonnes', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email address', type: 'email' }],\n });\n\n return model;\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SearchResult } from '../../../site/searchResult/searchResult';\nimport { InstagramFeed } from '../../../components';\nimport { AppVersion } from '../../../components';\nimport { TippingSignup } from '../../../site/tipping/signup/signup';\nimport { TippingLogin } from '../../../site/tipping/login/login';\nimport { TippingRecoverPassword } from '../../../site/tipping/recoverPassword/recoverPassword';\nimport { EnterTip } from '../../../site/tipping/enter/enterTip';\nimport { ReviewStanding } from '../../../site/tipping/review/reviewStanding';\nimport { TippingChangePassword } from '../../../site/tipping/password/changePassword';\nimport { TippingText } from '../../../site/tipping/text/tippingText';\nimport { PriceUpdate } from '../../../site/priceUpdate/priceUpdate';\nimport { PriceUpdateSimple } from '../../../site/priceUpdateSimple/priceUpdate';\nimport { PaymentPaperwork } from '../../../site/paymentPaperwork/form';\nimport { ContractPaperwork } from '../../../site/contractPaperwork/form';\n\n\nexport function Code(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, cmsOption);\n\n const code = cmsUtils.payload(item, 'Code');\n const codeType = cmsUtils.payload(item, 'CodeType');\n let controls = null;\n if (codeType === 'Json') {\n const codeJson = JSON.parse(code);\n\n if (codeJson.control === 'search-results'){\n controls = \n } else if(codeJson.control === 'app'){\n controls = \n } else if (codeJson.control === 'instagram') {\n controls = \n } else if (codeJson.control === 'signup-individual') {\n controls = \n } else if (codeJson.control === 'login-individual') {\n controls = \n } else if (codeJson.control === 'signup-sportingclub') {\n controls = \n } else if (codeJson.control === 'login-sportingclub') {\n controls = \n } else if (codeJson.control === 'signup-gazebo') {\n controls = \n } else if (codeJson.control === 'login-gazebo') {\n controls = \n } else if (codeJson.control === 'signup-wanderers') {\n controls = \n } else if (codeJson.control === 'login-wanderers') {\n controls = \n } else if (codeJson.control === 'entertip') {\n controls = \n } else if (codeJson.control === 'standing') {\n controls = \n } else if (codeJson.control === 'change-password') {\n controls = \n } else if (codeJson.control === 'password-recovery') {\n controls = \n } else if (codeJson.control === 'tippingText') {\n controls = \n } else if (codeJson.control === 'price-update') {\n controls = \n } else if (codeJson.control === 'price-update-simple') {\n controls = \n } else if (codeJson.control === 'payment-paperwork') {\n controls = \n } else if (codeJson.control === 'contract-paperwork') {\n controls = \n }\n }\n\n const cssClass = utils.classNames('cms_item', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n if (cmsOption.isCmsEdit)\n return (\n
\n
\nCode Type: {codeType}\n{code}}
\n
\n )\n else if (codeType === 'Text')\n return (\n
\n )\n else\n return (\n
{controls}
\n )\n}\n","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\nexport function BlogPosts(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const posts = getPages(cmsUtils.payload(item, 'BlogPosts'));\n const numOfTileLines = parseInt(cmsUtils.payload(item, 'NumOfTileLines', '2'));\n //console.log(numOfPost, parseInt(numOfPost));\n //console.log(posts);\n const bp = utils.ui.getCurrentBreakpoint();\n const tilesPerLine = {xs:1, sm:1, md:2, lg:2, xl:3, xxl:4}\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 3);\n const step = numOfPost;\n console.log(bp, numOfTileLines, tilesPerLine, numOfPost)\n\n const [tilesToShow, setTilesToShow] = React.useState(numOfPost);\n\n const displayingPosts = posts.length > tilesToShow ? posts.slice(0, tilesToShow) : posts;\n const showMore = posts.length > displayingPosts.length;\n\n const pageTileElts = displayingPosts.map((page, index) =>\n \n );\n\n const cssClass = utils.classNames('cms_item', 'blogTiles tiles', item.cssClass || item.anchorName || '');\n\n return (\n <>\n
\n {pageTileElts}\n
\n {showMore && (
\n { setTilesToShow(tilesToShow + step) }}>LOAD MORE
)}\n \n );\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nfunction Tile(props) {\n const page = props.page;\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n return (\n
\n \n
\n
\n
\n
\n {page.pageTitle}\n
\n
\n {page.tileDesc || page.description}\n
\n
READ MORE
\n
\n
\n
\n
\n )\n}","import React from 'react';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\n\nexport function BlogPostTitle(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const title = cmsUtils.payload(item, 'PageTitle');\n const postDate = cmsUtils.payload(item, 'PostDate');\n\n const cssClass = utils.classNames('blogView__titleContainer', 'cms_item', item.cssClass || item.anchorName || '');\n\n return (\n
\n
\n {postDate}\n
\n

\n {title}\n

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

\n { title }\n

\n
\n { rating }\n
\n {/* style={{ flexBasis: props.desH + \"px\" }} */}\n
\n { desc }\n
\n
\n { bottom }\n
\n
\n );\n}","//import { Item } from 'cms/items/item';\nimport Slider from \"react-slick\";\nimport utils from '../../../utils';\n//import cmsUtils from 'cms/utils/cmsUtils';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\n//import { useState, useEffect } from 'react';\n\nimport { TestimonialItem } from '../testimonialItem/view';\n\nexport function TestimonialPanel(props){\n const item = props.item;\n //const defaultDesH = 220;\n const startRatingColor = props.startRatingColor;\n const subItems = item.items || [];\n //console.log(subItems.length);\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'testimonialPanel', item.cssClass || item.anchorName || '');\n \n //const [desH, setDesH] = useState(defaultDesH);\n\n //var maxDesTextLength = 0;\n const testimonialItems = subItems.map((subItem, index) => {\n // let subItemDes = cmsUtils.payload(subItem, \"Desc\");\n // if(maxDesTextLength < subItemDes.length){\n // maxDesTextLength = subItemDes.length\n // }\n //return \n return \n }\n );\n \n // useEffect(() => {\n // if(defaultDesH < maxDesTextLength){\n // setDesH(maxDesTextLength);\n // }\n // }, [maxDesTextLength]);\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1700,\n autoplaySpeed: 3000,\n ////fade: true,\n autoplay: true,\n slidesToShow: (subItems.length >= 3 ? 3 : subItems.length),\n //slidesToShow: 3,\n slidesToScroll: 1,\n responsive : [\n {breakpoint : 1024, settings : { slidesToShow: (subItems.length >= 2 ? 2 : subItems.length) }},\n {breakpoint : 800, settings : { slidesToShow: 1 }}\n ]\n };\n\n return(\n
\n \n { testimonialItems }\n \n
\n );\n}","//import { css, keyframes } from '@emotion/core'\n//import { variables, mq } from 'cssInJs'\n\nimport { css } from '@emotion/core'\nimport { mq } from '../../cssInJs'\n\nexport default {\n \n photoGallery : css({\n maxWidth : '960px',\n margin: 'auto'\n }),\n \n photos : css({\n marginLeft: '-5px',\n marginRight: '-5px',\n '& > div' : {\n display: 'flex',\n flexWrap: 'wrap'\n }\n // display: 'flex',\n // flexWrap: 'wrap',\n // marginLeft: '-5px',\n // marginRight: '-5px',\n // '& img' : {\n // flex: '1 1 150px',\n // margin: '5px',\n // paddingTop : '60%',\n // width : '150px',\n // border: '1px solid red'\n // }\n }),\n // photoContainer : css({\n // //color : 'red',\n // flex: '1 1 150px',\n // margin : '5px',\n // height : '150px',\n // display: 'flex',\n // overflow: 'hidden',\n // cursor:'pointer'\n // }),\n photoContainer : css(mq({\n //color : 'red',\n flexGrow: '1',\n flexShrink: '1',\n flexBasis: ['160px', '150px'],\n maxWidth:['167px', '150px'],\n margin : '5px',\n height : '150px',\n display: 'flex',\n overflow: 'hidden',\n cursor:'pointer'\n })),\n photo : css({\n margin : 'auto',\n transform: 'scale(3)'\n }),\n photoEmpty : css({\n flex: '1 1 150px',\n height : '0px'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\n\nimport SimpleReactLightbox, {SRLWrapper} from 'simple-react-lightbox'\nimport utils from '../../utils';\nimport cmsUtils from '../../cms/utils/cmsUtils';\n\nconst options = {\n enablePanzoom : false,\n showCaption : false,\n showThumbnails : false\n};\n\nexport function PhotoGallery(props){\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'photoGallery', item.cssClass || item.anchorName || '');\n const _images = cmsUtils.payload(item, 'ImageUrl') ? cmsUtils.payload(item, 'ImageUrl').split(\"|\") : [];\n \n const imageElts = _images.map((im, index) =>\n
\n \"Caption\"\n
\n );\n \n return(\n
\n \n
\n \n {/*
\n \"Caption\"\n
\n
\n \"Caption\"\n
*/}\n { imageElts }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ); \n}","import React from 'react';\nimport { BannerPanel } from './bannerPanel/view';\nimport { BannerItem } from './bannerItem/view';\nimport { Panel } from './panel/view';\nimport { Html } from './html/view';\n//import { TestimonialPanel } from './testimonialPanel/view';\n//import { TestimonialItem } from './testimonialItem/view';\nimport { ImagePanel } from './imagePanel/view';\n//import { PageTiles } from './pageTiles/view';\n//import { PageTileAdore } from '../../components/pageTileAdore/view';\nimport { PageTilesBsyc } from '../../components/pageTile--bsyc/view';\nimport { SingleBanner } from './singleBanner/view';\nimport { ContactForm } from './contactForm/view';\nimport { YoutubeBannerPanel } from './youtubeBannerPanel/view';\nimport { YoutubeEmbedded } from './youtubeEmbedded/view';\nimport { Code } from './code/view';\nimport { BlogPosts } from './blogPosts/view';\nimport { BlogPostTitle } from './blogPostTitle/view';\nimport { MultiColumnPanel } from './multiColumnPanel/view';\nimport { ExpandableHtml } from './expandableHtml/view';\nimport { TestimonialPanel } from '../../components/testimonial/index';\nimport { PhotoGallery } from '../../components/photoGallery/view';\n\nexport function Item(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems, cmsOption);\n\n let itemElt = (<>);\n if (item.itemTypeCode === 'Panel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Html') {\n itemElt = ();\n } else if (item.itemTypeCode === 'BannerPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'BannerItem') {\n itemElt = ();\n } else if (item.itemTypeCode === 'TestimonialPanel') {\n const setting = {\n startRatingColor : '#1b1664'\n };\n itemElt = ();\n } else if (item.itemTypeCode === 'ImagePanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'PageTiles') {\n itemElt = ();\n } else if (item.itemTypeCode === 'SingleBanner') {\n itemElt = ();\n } else if (item.itemTypeCode === 'ContactForm') {\n itemElt = ();\n } else if (item.itemTypeCode === 'YoutubeBannerPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'YoutubeEmbedded') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Code') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Blog-Posts') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Blog-PostTitle') {\n itemElt = ();\n } else if (item.itemTypeCode === 'MultiColumnPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'ExpandableHtml') {\n itemElt = ();\n } else if (item.itemTypeCode === 'PhotoGallery') {\n itemElt = ();\n }\n else {\n itemElt = (
{item.itemTypeCode}
);\n }\n \n // else if (item.itemTypeCode === 'TestimonialItem') {\n // itemElt = ();\n // }\n\n // const subItemsElts = subItems.map((subItem, index) =>\n // \n // );\n return (\n <>\n {itemElt}\n {/* {subItemsElts} */}\n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useRouter } from '../../../components';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport { NotFound } from '../../../components';\nimport env from '../../../env';\nimport { useStore } from '../../../store';\nimport { ErrorPopup, Loading } from '../../../components';\nimport { useInstagram } from '../../../components';\nimport { MetaTag } from '../../../components';\nimport cmsUtils from '../../utils/cmsUtils';\nimport utils from '../../../utils';\nimport { gtm } from '../../../lib/tracking';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPage() {\n const { dispatch } = useStore();\n const [pageLoaded, setPageLoaded] = useState(false);\n const [data, setData] = useState(null);\n //const path = usePath();\n //log('view page', path);\n const { pathname } = useRouter();\n useInstagram();\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n useEffect(() => {\n if (data){\n dispatch({ type: 'SET_PAGE', payload: data.data })\n dispatch({ type: 'SET_MENU', payload: data.menu })\n }\n // eslint-disable-next-line\n }, [data]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\n //const menuData = get.response.menu;\n const cmsOption = {};\n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n setData(get.response);\n document.title = pageData.pageTitle;\n gtm.pageView(pathname, pageData.pageTitle);\n return null;\n } else if (!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 \n
\n {sectionItems}\n
\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\nfunction getMetaTag(pageData) {\n const country = utils.site.isNZ? 'New Zealand' : 'Australia'\n const siteName = env.siteName + ' ' + country;\n\n return {\n title: pageData.pageTitle + ' | ' + siteName,\n description: cmsUtils.payload(pageData, 'Description'),\n keywords: cmsUtils.payload(pageData, 'Keyword'),\n heroImageUrl: utils.site.resourcePath(cmsUtils.payload(pageData, 'ImageUrl')),\n language: 'English',\n country: country,\n siteName: siteName,\n url: utils.site.resourcePath(pageData.pageUrl),\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n }\n}","import React from 'react';\r\nimport { loadJs } from '../../lib/net-loader';\r\n\r\nexport function useInstagram() {\r\n const [embedStatus, setEmbedStatus] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n loadEmbedJs()\r\n })\r\n\r\n function loadEmbedJs() {\r\n if (typeof window !== `undefined`) {\r\n //console.log('instgrm effect', embedStatus, window.instgrm);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n }\r\n else if (!embedStatus && embedStatus !== 'loading') {\r\n setEmbedStatus('loading');\r\n loadJs(\"https://www.instagram.com/embed.js\").then(data => {\r\n //console.log('instgrm loaded', data);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n setEmbedStatus('loaded');\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return { loadEmbedJs: loadEmbedJs }\r\n}","//import { CmsPageController } from './cms-page-controller'\n\nexport class CmsRadioSender {\n controller;//: CmsPageController;\n constructor(controller) {\n this.controller = controller;\n }\n\n sendMessageToParent(action: string, data: any) {\n var cloned = JSON.parse(JSON.stringify(data));\n if (typeof window !== `undefined`) {\n window.parent.postMessage({\n action: action,\n data: cloned\n }, \"*\");\n }\n }\n\n saveAllDirtyHtml(htmlChanges) {\n // skip another unneccesary round trip\n this.sendMessageToParent('return-all-dirty-html', {\n returnTo: '_saveAllDirtyHtml',\n htmlChanges: htmlChanges\n });\n }\n\n selectControllerItem(data) {\n this.sendMessageToParent(\"select-controller-item\", data);\n }\n\n returnAllDirtyHtml(returnTo, htmlChanges) {\n this.sendMessageToParent('return-all-dirty-html', {\n returnTo: returnTo,\n htmlChanges: htmlChanges\n });\n }\n\n returnHtml(id, html) {\n this.sendMessageToParent('return-html', {\n id: id,\n html: html\n });\n }\n\n markDirtyHtml(id) {\n this.sendMessageToParent(\"mark-dirty-html-item\", { id: id });\n }\n}\n","//declare var CKEDITOR: any;\n//import { CmsPageController } from './cms-page-controller'\n\nexport class CmsRadioReceiver {\n controller;//: CmsPageController;\n constructor(controller) {\n this.controller = controller;\n this.init();\n }\n\n init() {\n if (typeof window !== `undefined`) {\n var self = this;\n window.addEventListener(\"message\", function (e) {\n\n var action = e.data.action;\n var data = e.data.data;\n\n // console.log(e, \"cms-action-received: \" + action, data);\n\n if (action === 'select-item') {\n self.selectItem(data.itemId)\n } else if (action === 'media-selected-ckeditor') {\n self.mediaSelectedCKEditor(data)\n } else if (action === 'get-all-dirty-html') {\n var htmlChanges = self.controller.getAllDirtyHtml();\n self.controller.sender.returnAllDirtyHtml(data.returnTo, htmlChanges);\n } else if (action === 'get-html') {\n var html = self.controller.getHtml(data.id);\n self.controller.sender.returnHtml(data.id, html);\n } else if (action === 'page-reload') {\n window.location.reload();\n }\n }, false);\n }\n }\n\n mediaSelectedCKEditor(data) {\n const CKEDITOR = window['CKEDITOR'] || {};\n CKEDITOR.tools.callFunction(data.funcNum, data.selectedPath);\n }\n\n selectItem(itemId) {\n this.controller.selectItemFromController(itemId);\n }\n}\n","import { CmsRadioSender } from './cms-radio-sender'\n// //import * as $ from 'jquery';\n// declare var CKEDITOR: any;\n// import * as $ from 'jquery';\n\nexport class CmsHtmlEditor {\n ckeditorConfig;\n ckeditorStylesSet;\n sender;\n constructor(cmsEndpoint: string, sender: CmsRadioSender) {\n this.ckeditorConfig = {\n startupFocus: true,\n filebrowserBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectpageormedia', //'/cms/browse',//'/cms/resource/selectfileckeditor',\n filebrowserImageBrowseUrl: cmsEndpoint + '/cms41helper/browse/selectmedia', //'/cms/browse?type=rc',//'/cms/resource/selectfileckeditor?type=Images',\n extraPlugins: 'sourcedialog,youtubejaba,lineutils,widget,embedjaba,image2',\n toolbar: [{\n name: 'basicstyles',\n groups: ['basicstyles', 'cleanup'],\n items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']\n },\n {\n name: 'paragraph',\n groups: ['list', 'align'],\n items: ['NumberedList', 'BulletedList', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight',\n 'JustifyBlock'\n ]\n },\n {\n name: 'links',\n items: ['Link', 'Unlink', 'Anchor']\n },\n {\n name: 'insert',\n items: ['Image', 'Table', 'HorizontalRule', 'PageBreak', 'Iframe', 'Youtube'/*, 'EmbedJaba'*/]\n },\n '/',\n {\n name: 'document',\n groups: ['mode'],\n items: ['Sourcedialog']\n },\n {\n name: 'clipboard',\n groups: ['clipboard', 'undo'],\n items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']\n },\n {\n name: 'styles',\n items: ['Styles', 'Format']\n },\n {\n name: 'colors',\n items: ['TextColor', 'BGColor']\n },\n {\n name: 'tools',\n items: ['Maximize', 'ShowBlocks']\n }\n ],\n extraAllowedContent: 'style;span;*[id,rel,data-*](*){*}'\n }\n\n this.ckeditorStylesSet = [\n /* Block Styles */\n\n // These styles are already available in the \"Format\" combo (\"format\" plugin),\n // so they are not needed here by default. You may enable them to avoid\n // placing the \"Format\" combo in the toolbar, maintaining the same features.\n /*\n { name: 'Paragraph',\t\telement: 'p' },\n { name: 'Heading 1',\t\telement: 'h1' },\n { name: 'Heading 2',\t\telement: 'h2' },\n { name: 'Heading 3',\t\telement: 'h3' },\n { name: 'Heading 4',\t\telement: 'h4' },\n { name: 'Heading 5',\t\telement: 'h5' },\n { name: 'Heading 6',\t\telement: 'h6' },\n { name: 'Preformatted Text',element: 'pre' },\n { name: 'Address',\t\t\telement: 'address' },\n */\n { name: 'Title', attributes: { 'class': 'title' } },\n // { name: 'Heading 3', element: 'h1', attributes: { 'class': 'h3' } },\n // { name: 'Super paragraph',\t\telement: 'p', attributes: { 'class': 'superparagraph' } },\n\n //{ name: 'Italic Title',\t\telement: 'h2', styles: { 'font-style': 'italic' } },\n //{ name: 'Subtitle',\t\t\telement: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },\n //{\n //\tname: 'Special Container',\n //\telement: 'div',\n //\tstyles: {\n //\t\tpadding: '5px 10px',\n //\t\tbackground: '#eee',\n //\t\tborder: '1px solid #ccc'\n //\t}\n //},\n\n /* Inline Styles */\n\n // These are core styles available as toolbar buttons. You may opt enabling\n // some of them in the Styles combo, removing them from the toolbar.\n // (This requires the \"stylescombo\" plugin)\n /*\n { name: 'Strong',\t\t\telement: 'strong', overrides: 'b' },\n { name: 'Emphasis',\t\t\telement: 'em'\t, overrides: 'i' },\n { name: 'Underline',\t\telement: 'u' },\n { name: 'Strikethrough',\telement: 'strike' },\n { name: 'Subscript',\t\telement: 'sub' },\n { name: 'Superscript',\t\telement: 'sup' },\n */\n\n //{ name: 'Marker',\t\t\telement: 'span', attributes: { 'class': 'marker' } },\n\n //{ name: 'Big',\t\t\t\telement: 'big' },\n //{ name: 'Small',\t\t\telement: 'small' },\n //{ name: 'Typewriter',\t\telement: 'tt' },\n\n //{ name: 'Computer Code',\telement: 'code' },\n //{ name: 'Keyboard Phrase',\telement: 'kbd' },\n //{ name: 'Sample Text',\t\telement: 'samp' },\n //{ name: 'Variable',\t\t\telement: 'var' },\n\n //{ name: 'Deleted Text',\t\telement: 'del' },\n //{ name: 'Inserted Text',\telement: 'ins' },\n\n //{ name: 'Cited Work',\t\telement: 'cite' },\n //{ name: 'Inline Quotation',\telement: 'q' },\n\n //{ name: 'Language: RTL',\telement: 'span', attributes: { 'dir': 'rtl' } },\n //{ name: 'Language: LTR',\telement: 'span', attributes: { 'dir': 'ltr' } },\n\n /* Object Styles */\n { name: 'Button', element: 'a', attributes: { 'class': 'button' } },\n { name: 'Primary Button', element: 'a', attributes: { 'class': 'p-button' } },\n { name: 'Secondary Button', element: 'a', attributes: { 'class': 's-button' } },\n { name: 'More link', element: 'a', attributes: { 'class': 'more' } }\n //{\n //\tname: 'Styled image (left)',\n //\telement: 'img',\n //\tattributes: { 'class': 'left' }\n //},\n\n //{\n //\tname: 'Styled image (right)',\n //\telement: 'img',\n //\tattributes: { 'class': 'right' }\n //},\n\n //{\n //\tname: 'Compact table',\n //\telement: 'table',\n //\tattributes: {\n //\t\tcellpadding: '5',\n //\t\tcellspacing: '0',\n //\t\tborder: '1',\n //\t\tbordercolor: '#ccc'\n //\t},\n //\tstyles: {\n //\t\t'border-collapse': 'collapse'\n //\t}\n //},\n\n //{ name: 'Borderless Table',\t\telement: 'table',\tstyles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },\n //{ name: 'Square Bulleted List',\telement: 'ul',\t\tstyles: { 'list-style-type': 'square' } }\n ]\n\n this.sender = sender;\n }\n\n show($editor) {\n const CKEDITOR = window['CKEDITOR'] || {};\n //for ckeditor\n // console.log('ckeditor show');\n try {\n // We need to turn off the automatic editor creation first.\n CKEDITOR.disableAutoInline = true;\n } catch (e) { }\n\n var editor = CKEDITOR.inline('cmsCurrentEditor', this.ckeditorConfig);\n if (!CKEDITOR.stylesSet.get('default'))\n CKEDITOR.stylesSet.add('default', this.ckeditorStylesSet);\n\n var self = this;\n editor.on('change', function (evt) {\n // getData() returns CKEditor's HTML content.\n //$(\"#cmsCurrentEditor\").addClass(\"dirtyHtml\");\n //const itemId = $(\"#cmsCurrentEditor\").data('cms-item-id');\n const ed = document.querySelector('#cmsCurrentEditor');\n ed.classList.add('dirtyHtml');\n const itemId = ed.getAttribute('data-cms-item-id');\n\n //console.log(itemId);\n self.sender.markDirtyHtml(itemId);\n //console.log('Total bytes: ' + evt.editor.getData().length);\n });\n editor.on('paste', function (evt) {\n //console.log(evt.data.dataValue);\n //evt.data.dataValue = evt.data.dataValue.replace(/ /g, '');\n //evt.data.dataValue = evt.data.dataValue.replace(/

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

\").html(item.html());\n // if ($tmp.find('.cms-skeleton').length > 0)\n // return $tmp.find('.cms-skeleton').html();\n // else\n // return item.html();\n //tmp.find(\".cms_ctrl_in_editor\").each(function (inx, obj) {\n // var ctrlid = $(obj).attr(\"data-cms-ctrl-id\");\n // $(obj).replaceWith(\"__cms__ctrl:\" + ctrlid + \"__\");\n //});\n //return tmp.html();\n }\n\n}\n","import React, { useEffect } from 'react';\nimport { useRouter } from '../../../components';\nimport { useGet } from '../../../components';\nimport { Item } from '../../items/item';\nimport env from '../../../env';\nimport { loadJs } from '../../../lib/net-loader';\nimport { CmsPageController } from '../../services/cms-page-controller';\nimport { ErrorPopup, Loading } from '../../../components';\n\n// function useQuery() {\n// return new URLSearchParams(useLocation().search);\n// }\n\nexport function EditPage(props) {\n //const [page, setPage] = useState(null);\n\n //const pageId = props.pageId;\n const { query } = useRouter();\n const { cmsViewMode = 'edit', id } = query;\n const pageId = id;\n\n //console.log(pageId, cmsViewMode, env.apiBase, env)\n\n const get = useGet();\n useEffect(() => {\n get.send(env.apiBase + '/api/cms/GetPage/' + pageId + '?cmsViewMode=' + cmsViewMode);\n // eslint-disable-next-line\n }, [pageId]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //console.log(router.pathname);\n //console.log(res);\n\n const pageData = get.response.data;\n const cmsOption = { isCmsEdit: true };\n \n const cmsPageController = new CmsPageController();\n if (cmsViewMode !== 'viewonly') {\n const ver = 1;\n loadJs(\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\n ).then(data => {\n return loadJs(\n env.resourceBase + '/dist/cms/ckeditor/ckeditor.js?v=' + ver\n )\n }).then(data => {\n // console.log('script loaded ', data);\n cmsPageController.init({});\n document.querySelector('body').classList.add('cmsedit');\n }).catch(error => console.log(error));\n } else {\n const ver = 1;\n loadJs(\n env.resourceBase + '/dist/jquery-3.4.1/jquery.min.js?v=' + ver\n ).then(data => {\n cmsOption.isCmsEdit = false;\n cmsPageController.init({ viewOnly: true });\n }).catch(error => console.log(error));\n }\n\n //setPage(res.response.data);\n const sectionItems = pageData.sections.map((section, index) =>\n
\n );\n return (\n
\n {sectionItems}\n
\n );\n}\n\n\nfunction Section(props) {\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","import React, {useState, useEffect} from 'react';\nimport { SiteLink } from '../../components';\nimport { useStore } from '../../store';\n\nimport { FaChevronDown } from 'react-icons/fa';\n// import { SearchBar } from './searchBar';\n\n//for #contact link\nimport { handleElementLink } from '../../components';\n\nexport function NavBar(props) {\n const open = props.open;\n const currentLocation = props.currentLocation;\n const { state } = useStore();\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\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 //for #contact link\n function handleClick(e) {\n e.preventDefault();\n e.stopPropagation(); \n handleElementLink(e.target);\n closeMenu();\n }\n\n return (\n item.url === \"#contact\" ?\n
  • \n handleClick(e)}>\n {item.title}\n \n
  • \n : \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';\nimport { getTippingCompId } from '../../site/tipping/tippingCommon';\n\nexport function TopHeader(props) {\n\n const { pathname, path } = useRouter();\n const [menuOpened, setMenuOpened] = useState(false);\n const [currentLocation, setCurrentLocation] = useState(pathname);\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\t const hash = window.location.hash;\n\t const search = window.location.search;\n\t history.push(path + hash + search)\n\t\n\t if (hash) { scrollTo(); }\n\t }\n }\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)\n 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 // useEffect(() => {\n // console.log('use history')\n // }, []);\n\n const compId = getTippingCompId();\n const pathFiltered = (path || '').toLocaleLowerCase();\n let specialClassName = '';\n if (pathFiltered.indexOf('/wanderers') >= 0 ||\n pathFiltered.indexOf('comp=14') >= 0 ||\n (pathFiltered.indexOf('/tipping/') >= 0 && compId === '14')) specialClassName = 'wanderers';\n\n return (\n <>\n
    \n {\n history.history.length > 1 && \n \n BACK\n \n } \n \n {/*
    */}\n \n \"logo\"\n \n \n \"logo\"\n \n\n {specialClassName === 'wanderers' &&\n \n Wanderers\n \n }\n {/*
    */}\n \n\n \n
    \n \n );\n}","import Hammer from '@egjs/hammerjs'\nimport { gsap } from 'gsap';\n\nexport default class BottomDrawer {\n constructor(el, options = {}) {\n const defaults = {};\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: '/about-us', title: 'ABOUT US' },\n { url: '/footy-tips', title: 'FOOTY TIPS' },\n { url: '/grower-info', title: 'GROWER INFO' },\n { url: '/paperwork', title: 'PAPERWORK' },\n { url: '/contact-us', title: 'CONTACT US' }\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}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\n//import style from './style';\n//src=\"https://centrestate.stg4.jaba.com.au/sites/centrestate/media/pdf/growerupdateformwithtceft.pdf\">\nexport function PdfViewer(props){\n return(\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 { 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';\n//import { Footer } from './layout/footer/footer';\nimport { BottomDock } from './layout/bottomDock/bottomDock';\n// import { BlogView } from './site/blog/blogView';\nimport { useScrollPosition } from '@n8tb1t/use-scroll-position';\nimport { useParallax } from './components';\nimport { AppVersionPage } from './components';\nimport { MediaQueryStatus } from './components';\nimport { PdfViewer } from './components/pdfViewer/view';\nimport { CommonVideoPopup } from \"./layout/popup/commonVideoPopup\";\nimport { HelmetProvider } from 'react-helmet-async';\nimport { getTippingCompId } from './site/tipping/tippingCommon';\n\nfunction PageUpdated() {\n const { pathname } = useRouter();\n const parallax = useParallax();\n\n React.useLayoutEffect(() => {\n window.scrollTo(0, 0);\n parallax.reset();\n // eslint-disable-next-line\n }, [pathname]);\n return null;\n}\n\nfunction AppLayout(props) {\n const { pathname, path } = useRouter();\n //const [scrolled, setScrolled] = useState(false)\n //const path = usePath();\n //const routeResult = useRoutes(routes);\n\n // const parallax = useParallax();\n // //console.log(path, routeResult);\n // const routeChanged = (path) => {\n // //console.log(path);\n // parallax.reset();\n // }\n\n useScrollPosition(({ prevPos, currPos }) => {\n //console.log(currPos.x)\n //console.log(currPos.y);\n if (currPos.y > 90) {\n document.querySelector('body').classList.add('scrolled')\n } else {\n document.querySelector('body').classList.remove('scrolled')\n }\n //setScrolled(currPos.y > 90)\n }, [], null, true)\n\n //const pageChanged = useCallback(path => routeChanged(path), [])\n //useLocationChange((path) => { routeChanged(path, history)})\n //useLocationChange(path => routeChanged(path))\n \n const compId = getTippingCompId();\n const pathFiltered = (path || '').toLocaleLowerCase();\n let specialClassName = '';\n if (pathFiltered.indexOf('/wanderers') >= 0 ||\n pathFiltered.indexOf('comp=14') >= 0 ||\n (pathFiltered.indexOf('/tipping/') >= 0 && compId === '14')) specialClassName = 'wanderers';\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\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(registration => {\n // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration\n console.log('Service Worker registration successful with scope: ', registration.scope);\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 navigator.serviceWorker.addEventListener('controllerchange', function (ev) {\n console.log('Service Worker controller change', ev)\n // Ensure refresh is only called once.\n // This works around a bug in \"force update on reload\".\n if (preventDevToolsReloadLoop) return;\n preventDevToolsReloadLoop = true;\n window.location.reload();\n });\n\n // onNewServiceWorker(registration, function () {\n // console.log('onNewServiceWorker', registration)\n // alert('New Update Available');\n \n // console.log('User okay to update', registration);\n // if (!registration.waiting) {\n // // Just to ensure registration.waiting is available before calling postMessage()\n // return;\n // }\n // registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n\n // console.log('show refresh')\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 navigator.serviceWorker.ready.then(function (registration) {\n console.log('Service Worker ready');\n });\n}\n\n\n// function onNewServiceWorker(registration, callback) {\n// if (registration.waiting) {\n// console.log('onNewServiceWorker-registration.waiting')\n// // SW is waiting to activate. Can occur if multiple clients open and one of the clients is refreshed.\n// return callback();\n// }\n\n// function listenInstalledStateChange() {\n// console.log('listenInstalledStateChange', registration.installing)\n// registration.installing.addEventListener('statechange', function (event) {\n// console.log('listenInstalledStateChange - statechange', event)\n// if (event.target.state === 'installed') {\n// // A new service worker is available, inform the user\n// callback();\n// }\n// });\n// };\n\n// if (registration.installing) {\n// console.log('onNewServiceWorker-registration.installing')\n// return listenInstalledStateChange();\n// }\n\n// // We are currently controlled so a new SW may be found...\n// // Add a listener in case a new SW is found,\n// registration.addEventListener('updatefound', listenInstalledStateChange);\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 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';\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');\n const update = 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 registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n \n }\n }\n});\n"],"sourceRoot":""}