{"version":3,"sources":["polyfill/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/media.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","store/reducers.js","store/storeProvider.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/youtube/iframeApi.js","lib/youtube/youtubeBanner.js","lib/utils-core/debounce.js","cms/utils/cmsUtils.js","cms/items/bannerPanel/view.js","cms/items/bannerItem/view.js","cms/items/panel/view.js","cms/items/html/view.js","cms/items/testimonialPanel/view.js","cms/items/testimonialItem/view.js","cms/items/imagePanel/view.js","cms/items/pageTiles/style.js","cms/items/pageTiles/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/components/ValidationAlert.js","lib/form/formRenderHelper.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/TextareaInput.js","lib/form/controls/CheckboxInput.js","lib/form/controls/SelectInput.js","lib/form/controls/HiddenInput.js","lib/form/controlRenderer.js","lib/form/formValidate.js","lib/form/useForm.js","cms/items/contactForm/contactFormModel.js","lib/tracking/gtm.js","cms/items/contactForm/contactForm.js","cms/items/contactForm/view.js","cms/items/youtubeBannerPanel/view.js","site/atdw/searchResult/style.js","site/atdw/tile/style.js","site/atdw/searchOption/style.js","site/atdw/searchOption/view.js","site/atdw/search/view.js","site/atdw/searchOptionV2/style.js","site/atdw/searchOptionV2/view.js","site/atdw/searchV2/style.js","site/atdw/searchV2/view.js","site/atdw/page/style.js","cms/pages/partials/viewPartial.js","site/atdw/photoGallery/style.js","site/atdw/photoGallery/view.js","site/atdw/serviceTile/style.js","site/atdw/serviceTile/view.js","site/atdw/page/view.js","site/atdw/util/AtdwContext.js","site/atdw/map/style.js","site/atdw/map/view.js","site/atdw/servicePage/style.js","site/atdw/servicePage/view.js","site/atdw/mixedListings/view.js","site/atdw/tile/view.js","site/atdw/searchResult/view.js","site/searchResult/searchResult.js","cms/items/code/view.js","cms/items/blogPosts/view.js","cms/items/blogPostTitle/view.js","components/multiColumnPanel/style.js","components/multiColumnPanel/view.js","components/NonAtdwPageInfoBar/style.js","components/NonAtdwPageInfoBar/view.js","components/customAuth/services/useAuth.js","components/customAuth/controls/login/login.js","components/login/view.js","components/changeDetails/style.js","components/changeDetails/view.js","components/photoGallery/style.js","components/photoGallery/view.js","components/SliderAd/SliderAdPanel/style.js","components/SliderAd/SliderAdPanel/view.js","cms/items/signupForm/view/signupForm.js","cms/items/signupForm/view/signupFormModel.js","cms/items/item.js","cms/pages/viewPage/viewPage.js","lib/instagram-useInstagram/index.js","cms/services/cms-radio-sender.js","cms/services/cms-radio-receiver.js","cms/services/cms-html-editor.js","cms/services/cms-page-controller.js","cms/pages/editPage/editPage.js","layout/topHeader/searchBar.js","layout/topHeader/navBar.js","layout/topHeader/topHeader.js","layout/bottomDock/bottomDock.js","site/siteAuth/forgotPassword/style.js","site/siteAuth/forgotPassword/view.js","site/siteAuth/resetPassword/style.js","site/siteAuth/resetPassword/view.js","site/siteAuth/register/style.js","site/siteAuth/register/view.js","site/siteAuth/layout/view.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","apiBase","resourceBase","cmsEndpoint","ver","updateDate","MultiTxaCode","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","zIndex","inx","dangerouslySetInnerHTML","__html","SvgNarrowRight","variables","familyBase","familyHeader","primaryColor","fontColor","bgColor","breakpointNames","breakpoints","cssEmotion","firebaseSettings","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","iconColors","siteConfig","primary","secondary","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","indexOf","getLinkFromElement","linkEl","getAttribute","getLinkInfo","origin","currentPath","pathname","linkFiltered","replace","linkLower","toLowerCase","isExternal","isHash","isTel","isMailTo","url","path","i","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","getFolderPath","parentDepth","slice","join","toQueryString","params","Object","keys","encodeURIComponent","getYoutubeId","undefined","getSlug","text","getWebUrl","schema","getErrors","result","forEach","err","errorMessage","getErrorMessage","convertToObject","array","reduce","obj","item","convertToKeyValues","value","moveItem","list","fromIndex","toIndex","splice","removed","removeItem","insertItem","find","fn","findIndex","contains","distinct","comparer","filtered","x","sum","total","equal","list1","list2","found","j","caseInsensitiveCompare","a","b","localeCompare","compareIgnoreEmpty","asc","isNaN","addDays","date","days","Date","setDate","getDate","formatDate","dateObj","formatStr","toDate","format","formatYYYYMMDD","dd","mm","getMonth","yyyy","getFullYear","formatDDMMYYYY","parseDate","parseISO","toDateTime","dateStr","parse","isValidDate","d","bgUrl","imageUrl","encodeURI","decodeURI","bgUrlStyle","screenWidth","innerWidth","document","documentElement","clientWidth","body","screenHeight","innerHeight","clientHeight","outerWidth","offsetWidth","outerHeight","offsetHeight","hasClass","classList","match","RegExp","addClass","add","removeClass","remove","reg","toggleClass","scrollTo","selector","duration","delay","findElement","offset","elementOffset","gsap","to","ease","querySelectorOrNull","querySelector","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElementInViewport","bottom","right","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isEmpty","isNumeric","num","capitalize","expression","charAt","toUpperCase","toFieldName","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","parts","toString","registerPlugin","ScrollToPlugin","formatNumber","Math","round","toTelephoneNumber","like","search","shortId","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","getImageSetPath","setId","info","getPathDetails","baseFolder","setIds","lastFolder","classNames","form","ui","money","random","object","media","isMobile","utils","resourcePath","coreUtils","site","useApi","response","setResponse","setErrors","setStatus","request","setRequest","async","options","apiNetJwt","fetch","res","ok","json","statusText","JSON","fetchData","hasErrors","containsErrorMessage","msg","finding","some","addErrors","errs","done","send","sendRaw","httpOptionFn","args","setResult","reset","usePost","formDataFn","data","method","post","headers","stringify","sending","sendFormData","useGet","get","MediaQueryStatus","MetaTag","seoData","assign","description","name","content","keywords","language","country","faceBookDomainVerifi","heroImageUrl","siteName","rel","canonical","alternates","hreflang","MAX","MIN","getScrollProgress","scroll","scrollY","progress","boundsTop","viewport","bounds","setClass","pr","range","prVal","min","max","y","removeTransform","getScreenSize","defaultHolder","storeName","loadJs","promises","scripts","script","loadScript","Promise","all","holder_","forceToReload","holder","resolve","reject","networkLoaded","existing","createElement","src","onload","onerror","getElementsByTagName","appendChild","defaultSettings","cutoffPadding","speed","ParallaxData","settings","screenSize","panels","imageRatio","panelHeight","elements","timeoutId","useParallax","handleScroll","element","au","calculated","fromTop","toTop","backgroundPositionY","init","useLayoutEffect","addEventListener","removeEventListener","cnt","panel","querySelectorAll","autoPanelHeight","parseFloat","shadowHeight","shadowWidth","baseHeight","backgroundSize","useRouter","useParams","useLocation","useHistory","useRouteMatch","useMemo","navigate","Redirect","hash","query","queryString","historyItem","initialState","page","menu","popup","reducer","state","action","payload","Error","StoreContext","createContext","StoreProvider","useReducer","dispatch","Provider","useStore","useContext","handleElementLink","externalHandler","linkInfo","handled","SiteLink","target","other","goToLink","stopPropagation","mq","facepaint","bp","mqMin","mqMax","mediaQuery","matchMedia","isMin","isMax","overlay","marginLeft","marginRight","flexWrap","flexBasis","cursor","mixin","backgroundColor","thumbnailMax","videoId","getYoutubeCode","YoutubeBanner","youtubeBannerRef","useRef","playerStatus","setPlayerStatus","playerSize","setPlayerSize","ytPlayer","setYtPlayer","muted","setMuted","countPlayedRef","video","heightSet","videoLinkOrId","playerId","yt","posterImageUrl","canPlayVideo","loadVideo","current","container","containerSize","w","h","size","getSize","onApiReady","YT","tag","onYouTubeIframeAPIReady","firstScriptTag","insertBefore","player","Player","events","PlayerState","ENDED","countPlayed","playVideo","mute","resized","ms","_","apply","arguments","debounce","canPlay","Fragment","ref","backgroundImage","id","allow","frameBorder","pauseVideo","unMute","defaultVal","payloads","BannerPanel","subItems","items","cmsOption","cmsUtils","slides","subItem","Item","itemId","bannerPanel","dots","infinite","autoplaySpeed","fade","autoplay","slidesToShow","slidesToScroll","afterChange","$currentPosition","cssClass","anchorName","data-cms-item-id","isCmsEdit","BannerItem","captionTitle","linkUrl","captionbutton","titlePanel","Panel","backgroundTile","bgTheme","subItemsElts","Html","year","htmlBlock","buttons","restructureButton","data-cms-html","hrefType","processed","includes","enquiryType","handleClick","span","innerHTML","TestimonialPanel","itemElt","itemTypeCode","TestimonialItem","bottomText","ImagePanel","data-pxh","atdwTile","flexGrow","flexShrink","textDecoration","border","bg","paddingTop","backgroundPosition","town","fontWeight","lineHeight","descContainer","paddingBottom","desc","shotDesc","textOverflow","WebkitLineClamp","WebkitBoxOrient","overflow","PageTiles","tileType","pageTileElts","pagesSerialized","getPages","TileNoneAtdw","disableLink","idx","Tile","pageTitle","tileButtonText","tileDesc","SingleBanner","findControl","controlNameOrIndex","root","controls","findControlTraverse","controlName","control","getValue","getValueTraverse","helperFns","getFilesTraverse","getKeyValueTraverse","keyValue","controlType","customValueFn","files","abstractControl","controlObject","validators","controlOptions","touched","incomplete","findValidator","controlArray","ctrl","disableValidators","formModelHelper","parent","hasRequiredValidator","getNameForValidator","label","createValidator","opt","validate","defaultOpt","continueToValidate","getValidatorOptions","val","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","Required","validateOpt","triggeredByChange","Email","PastDate","PastDateNullAllowed","Length","validateControl","ValidationAlert","getLabel","formOption","requiredMark","getLabelAsString","TextInput","handleChange","helpText","attrs","fieldId","usePlaceholder","fieldLabel","placeHolder","valueStr","prependText","htmlFor","onChange","onKeyDown","onBlur","autoComplete","placeholder","checked","optionValue","DateSeparateInput","thisYear","setYear","month","setMonth","day","setDay","handleChangeInner","persist","months","selectStyle","fromYear","recentYear","handleChangeDay","handleChangeMonth","m","handleChangeYear","FileInput","Components","RadioListInput","option","inline","TextareaInput","textAreaRef","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","scrollHeight","rows","CheckboxInput","CheckboxListInput","SelectInput","HiddenInput","renderControlDirect","Component","getControl","renderControl","formRoot","nameOrIndex","validateTraverse","errorsFromControl","errorsFromSub","useForm","initialFormModel","formModel","setFormModel","template","onControlChanged","controlFromEvent","getControlValue","onBeforeUpdateValue","validateGroup","successHandler","errorHandler","formValidate","model","controlRenderer","validateForm","getFiles","getContactModel","fb","phone","email","enquiry","parkName","streetAddress","postCode","citySuburb","mailchimp","hasGTM","dataLayer","pageView","pageOpt","event","sendEvent","eventName","sendGAEvent","category","Contact","emailReceiver","preParkName","newModel","setCheckMsg","sendingStatus","setSendingStatus","checkMsg","checkStart","setCheckStart","gtm","contactEmail","render","textAlign","ContactForm","YoutubeBannerPanel","atdwTiles","petIcon","petIconBg","atdwSearchOption","marginBottom","boxShadow","search_btn","date_reset_btn","borderColor","borderRadius","dumyLabel","pet","paddingLeft","dateFormat","dateFormatPlus2","AtdwSearchOption","atdwType","_petFriendly","petFriendly","hidePetFriendly","checkIn","checkOut","numOfAdults","numOfKids","subType","searchOptionValue","setSearchOptionValue","today","checkInMinDate","checkOutMinDate","setCheckOutMinDate","typeOptions","bookingAble","handChange","elName","elValue","onSubmit","onGetSearchOption","isMulti","closeMenuOnSelect","noOptionsMessage","AtdwSearchTitle","sTitle","AtdwSearch","atdwArea","customCategories","atdwDataFromDB","reserveAtdwData","shuffledAtdwData","atdwData","trigger","context","AtdwContext","atdwState","setAtdwState","atdwSearchText","setAtdwSearchText","setTrigger","setCheckIn","setCheckOut","setNumOfAdults","setNumOfKids","searechAtdwFilter","atdwDataItem","_customCategories","_town","_name","_subType","filter","returnResult","additionalData","PRODUCTTYPES","productTypeId","productName","checkPetFriendly","_customCategoryArray","atdwDataHistory2","pre","_new","atdwDataHistory","getElementById","scrollIntoView","behavior","block","setupAtdwDataHistory2","setupAtdwTxaCheckInDate","_data","products","_attributes","attributes","_a","attributeId","shuffled","currentIndex","randomIndex","floor","temporaryValue","_filteredData","setupAtdwDataHistory","r_data","sendData","adults","kids","txaList","txaCode","_count","addAtdw","useCallback","_atdwContext","av","_checkIn","_checkOut","_numOfAdults","_numOfKids","AtdwSearchResult","AtdwSearchOptionV2","openPopupFun","portal__background","portal__popupcontainer","select__attribute__outer","select__attribute","no__filter__selected__text","category__button__container","category__select__container","category__button__item__wrapper","flex","show__result","paddingRight","category__button__item","category__button__item__inner","hr__style","borderTop","check__box__group","pet__container","accentColor","search__text","close__btn","s__filter__container","applied__filters","applied__filter__item","no__filter__text","Portal","mount","removeChild","createPortal","AtdwSearchV2","filteredAtdwData","openPopup","setOpenPopup","filterData","setFilterData","categoryFilter","bypass","filteredData","productFilters","categoryCode","_filterCheckItem","filterId","filterName","area","closePopupFun","changeCurrentFilter","_filter","_filterData","currentFilter","currentFilterData","changeFilter","selectedFilter","categoryOpenCheck","filters","category_1","category_2","category_3","category_4","category_5","category_6","category_area","handChangeForFilter","checkAtdwProductFilter","_count1","categoryCheckedNum","_count2","_count3","_count4","_count5","_count6","_countArea","_filteredIdsString","filteredIdsString","filteredDataResult","customFilter","_selectedFilter","_currentFilter","_currentFilterData","atdwFilters","categoryName","FilterItem","AppliedSearchFilters","tileSize","backgroundRepeat","banerIconsBar","flexDirection","cityName","detailContainer","atdwLoaction__click","atdwDes","serviceTiles","listStyle","borderRight","flag","contact_text","gps_text","booking__button","svg","img","booking_button_image","PageMemo","memo","pageData","sectionItems","sections","section","Section","sectionName","prevProps","nextProps","ViewPartial","pageLoaded","setPageLoaded","menuData","photoGallery","photos","photoContainer","photo","photoEmpty","enablePanzoom","showCaption","PhotoGallery","multimedia2","item2","serverPath","alt","altText","serviceTile","bgContainer","viewMore","ServiceTile","service","atdwName","slug","txacheckindate","serviceSlug","imgUrl","serviceMultimedia","attributeIdSizeOrientation","parseInt","getImageUrl","serviceName","serviceDescription","AtdwService","services","slugs","getSlugName","AtdwPageBaner","multimedia","primaryPhone","siteUrl","bookingUrl","_item","_index","crossOrigin","srcSet","AtdwAttributes","features","verticalAlign","attributeIdDescription","AtdwLocation","geoCode","address","ele","marker","google","maps","Map","center","lat","lng","zoom","Marker","getFlag","getMetaTag","product","productShortDescription","AtdwPage","serviceSlugs","atdwEx","atdwProduct","setAtdwProduct","URLSearchParams","abortController","AbortController","signal","_preParkName","servicesSlug","addresses","attributeIdAddress","Number","geocodeGdaLatitude","geocodeGdaLongitude","addressLine1","addressPostalCode","communication","attributeIdCommunicationDescription","communicationDetail","attributeTypeId","_tempDataId","va","n","attributeIdMultimediaContent","multimediaId","abort","prop","productDescription","atdwMap","popupBackground","popupTitle","popupTown","popupDesc","AtdwMap","currentFilterType","currentFilterArea","fetchAble","mapSate","setMapSate","popupData","setPopupData","_el","googlemap","infowindow","InfoWindow","shortDesc","navigator","userAgent","addListener","open","close","switchMap","serviceDes","ServicePageBanner","ServiceFeatures","ServicePage","atdwService","setAtdwService","_images","postcode","MixedListings","setAtdwData","pages","productId","AtdwTile","fromCalled","changeUpperCases","txt","atdwTxaCheckInDate","atdwDatas","SearchResult","keyword","q","atdw","PageList","searchHighlight","Code","code","codeType","codeJson","BlogPosts","posts","numOfTileLines","tilesPerLine","xs","sm","md","lg","xl","xxl","numOfPost","step","tilesToShow","setTilesToShow","displayingPosts","showMore","BlogPostTitle","multiColumnPanelMain","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","colStyle","NonAtdwPageInfoBar","website","bookings","firebase","authContext","ProvideAuth","auth","user","setUser","session","setSession","setUserSession","localStorage","setItem","getIdTokenResult","tokenResult","expirationTime","wrapUser","uid","displayName","photoUrl","photoURL","emailVerified","profileCheched","token","roles","expireAt","expired","unsubscribe","onAuthStateChanged","setInterval","extendSession","clearInterval","signin","password","signInWithEmailAndPassword","signup","createUserWithEmailAndPassword","signout","signOut","sendPasswordResetEmail","confirmPasswordReset","useProvideAuth","useAuth","Login","username","setUsername","setPassword","setError","pending","setPending","router","noValidate","catch","required","autoFocus","_useAusth","formContainer","ChangeDetails","_auth","setInfo","buttonTrigger","setButtonTrigger","pageLoading","setPageLoading","redirect","setRedirect","setMsg","organisation","results","userInfo","checkPassword","passwordClue","resetPassword","imageElts","im","sliderAdPanel","sliderImageWrapper","sliderImageWrapper2","sliderImage","SliderAdPanel","shuffledSubItems","sliderAdItems","imageUrl2","currentImageUrl","eTracking","eCategory","eAction","eLabel","eValue","sendEventToGa","numOfSlides","maxNum","SignupForm","boxTitle","boxSubTitle","backgroundImg","modalOpen","setModalOpen","xmlns","strokeLinecap","strokeLinejoin","checkAuthSession","setCheckAuthSession","pageType","pageTypeCode","ViewPage","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","useInstagram","redirectTo","CmsRadioSender","controller","cloned","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","$editor","CKEDITOR","disableAutoInline","editor","stylesSet","on","evt","ed","markDirtyHtml","instances","cmsCurrentEditor","setData","getData","destroy","CmsPageController","viewOnly","receiver","htmlEditor","$","initGlobalVars","off","attr","is","ctrlKey","which","saveAllDirtyHtml","$item","fromController","doubleclicked","cke_top","closeEditingItem","findItem","removeAttr","depth","showHtmlEditor","selectControllerItem","openEdit","editableParent","parents","first","show","extend","htmleditor","getAnchors","anchors","each","htmlbody","animate","$section","getCurrentHtml","ItemId","SectionId","Content","itemid","formvals","cms_replace_item_html","EditPage","cmsViewMode","pageId","cmsPageController","SearchBar","onCloseMenu","setKeyword","NavBar","currentLocation","menuItemElts","MenuItem","subMenuOpened","setSubMenuOpened","SubMenuItem","closeMenu","toggleSubmenu","TopHeader","menuOpened","setMenuOpened","setCurrentLocation","scrolled","setScrolled","initHistory","setHistory","nav","getLast","getPrevious","getPreviousPath","anchor","toggleMenu","p","offsetTop","innerwidth","routeChanged","aria-label","BottomDock","links","isCurrent","linkElts","textContainer","ForgotPassword","setEmail","ResetPassword","u","Register","check","SiteAuthLayout","PageUpdated","parallax","AppLayout","useScrollPosition","prevPos","currPos","_googleMapScript","defer","_hash","exact","App","setAtdwDataHistory","setAtdwDataHistory2","setAtdwTxaCheckInDate","isLocalhost","Boolean","hostname","serviceUpdateCheckerInterval","registerValidSW","swUrl","serviceWorker","register","updateViaCache","registration","scope","update","preventDevToolsReloadLoop","ev","onupdatefound","installing","installingWorker","onstatechange","onUpdate","onSuccess","ready","ReactDOM","URL","contentType","unregister","checkValidServiceWorker","confirm","waiting"],"mappings":"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","file":"static/js/main.cb357226.chunk.js","sourcesContent":["// closest\n\nif (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || \n Element.prototype.webkitMatchesSelector;\n}\n\nif (!Element.prototype.closest) {\n Element.prototype.closest = function(s) {\n var el = this;\n\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n\n\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 window.location.reload();\n }\n\n function goBack(e) {\n e.preventDefault();\n window.history.back();\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 apiBase: process.env.REACT_APP_API_ENDPOINT,\n resourceBase: process.env.REACT_APP_RESOURCE_BASEURL,\n cmsEndpoint: process.env.REACT_APP_CMS_ENDPOINT,\n ver: process.env.REACT_APP_VERSION,\n updateDate: process.env.REACT_APP_UPDATED_AT,\n MultiTxaCode : process.env.REACT_APP_MULTITXACODE,\n}\n\nconsole.log(process.env, config)\nexport default {\n ...config\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'}) {\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 zIndex: '1000'\r\n })\r\n\r\n return
\r\n

{title}

\r\n {props.children}\r\n {messages.map((error, inx) => (\r\n
\r\n ))}\r\n \r\n
\r\n}\r\n","import React from \"react\";\r\n\r\nfunction SvgNarrowRight(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgNarrowRight;\r\n","const overloading = {\n breakpointNames: ['sm', 'md', 'lg', 'xl', 'xxl'],\n breakpoints: [576, 768, 992, 1200, 1600]\n}\n\nconst variables = {\n familyBase: '\"Gotham\",sans-serif',\n familyHeader: '\"DIN Next LT Pro\",serif',\n\n primaryColor: '#c20f2f',\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 firebaseSettings = {\n apiKey: \"AIzaSyCf-AIHxcfc67ZNkQB9G1A-ovhl5aVtUgI\",\n authDomain: \"jaba-saparks.firebaseapp.com\",\n databaseURL: \"https://jaba-saparks.firebaseio.com\",\n projectId: \"jaba-saparks\",\n storageBucket: \"jaba-saparks.appspot.com\",\n messagingSenderId: \"888871261278\",\n appId: \"1:888871261278:web:f76ac0ce159ebc2d4fd0cf\",\n}\n\nexport default {\n cssEmotion,\n firebaseSettings\n}","import * as React from \"react\";\r\nimport siteConfig from '../../../config';\r\n\r\nconst iconColors = (siteConfig && siteConfig.iconColors) || { primary: \"#eee\", secondary: \"#000\" }\r\n\r\nfunction SvgLoading(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgLoading;","import React from 'react';\r\nimport { LoadingCircle } from '../../icons';\r\n/** @jsx jsx */\r\nimport { css, jsx } from '@emotion/core'\r\n\r\nexport function Loading({ children }) {\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 {children}\r\n
\r\n
\r\n}","export function isExternalLink(link){\r\n return link && (link.indexOf('https://') === 0 || link.indexOf('http://') === 0 || link.indexOf('://') === 0);\r\n}\r\n\r\nexport function getLinkFromElement(el){\r\n if (!el) return null;\r\n const linkEl = el.closest('a');\r\n //console.log(el, linkEl);\r\n if (linkEl){\r\n return linkEl.getAttribute('href');\r\n }\r\n return null;\r\n}\r\n\r\n\r\n// router utils\r\nexport function getLinkInfo(link) {\r\n if (!link) return null;\r\n\r\n const origin = typeof window !== `undefined` && window.location && window.location.origin;\r\n const currentPath = typeof window !== `undefined` && window.location && window.location.pathname;\r\n let linkFiltered = link.replace(origin, '').replace(currentPath + '#', '#');\r\n let linkLower = link.toLowerCase();\r\n\r\n //if (isStaticFile(linkLower)) return null;\r\n const isExternal = isExternalLink(linkFiltered);\r\n const isHash = linkFiltered.indexOf('#') === 0;\r\n const isTel = linkFiltered.indexOf('tel:') === 0;\r\n const isMailTo = linkFiltered.indexOf('mailto:') === 0;\r\n const type = (isHash && 'hash') || (isTel && 'tel') || (isMailTo && 'mailto') || \r\n (isStaticFile(linkLower) && 'static') || (isExternal && 'external') || 'internal';\r\n\r\n return { url: linkFiltered, type: type, ext: getExtension(link) };\r\n}\r\n\r\nvar exts = ['.pdf', '.jpg', '.png', '.gif', '.docx', '.doc']\r\nfunction isStaticFile(path) {\r\n for(let i = 0; i < exts.length; i++) {\r\n if (path.indexOf(exts[i]) >= 0) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function getExtension(filename) {\r\n if (!filename || filename.indexOf('.') < 0) return null;\r\n return filename.split('.').pop().toLowerCase();\r\n}\r\n\r\nexport function getFilename(url) {\r\n return url.split('/').pop().split('?')[0];\r\n}\r\n\r\nexport function getFolderPath(url, parentDepth = -1) {\r\n return url.split('/').slice(0, parentDepth).join('/');\r\n}\r\n\r\n//\r\nexport function toQueryString(params) {\r\n var queryString = Object.keys(params).map((key) => {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\r\n }).join('&');\r\n return queryString;\r\n}\r\n\r\nexport function getYoutubeId(url){\r\n url = url.split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\r\n return (url[2] !== undefined) ? url[2].split(/[^0-9a-z_-]/i)[0] : url[0];\r\n}\r\n\r\nexport function getSlug(text){\r\n return text.toLowerCase().replace(/ /g,'-').replace(/[-]+/g, '-').replace(/[^\\w-]+/g,'');\r\n}\r\n\r\nexport function getWebUrl(url, schema = 'https://'){\r\n if (!url) return null;\r\n if (url.indexOf('https:') >= 0 || url.indexOf('http:') >= 0 || url.indexOf(':') >= 0) {\r\n return url;\r\n }\r\n return schema + url;\r\n}","//#region error json parsing\r\nexport const getErrors = (result) => {\r\n let errors = [];\r\n if (result && result.errors && result.errors.length > 0) {\r\n result.errors.forEach(err => {\r\n errors.push(err.errorMessage);\r\n });\r\n }\r\n return errors;\r\n}\r\n\r\nexport const getErrorMessage = (result) => {\r\n let errors = getErrors(result);\r\n return errors.join(\" \");\r\n}\r\n//#endregion","//#region conversion between array and object\r\nexport const convertToObject = (array, key) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item,\r\n };\r\n }, initialValue);\r\n};\r\n\r\nexport const convertToKeyValues = (array, key, value) => {\r\n const initialValue = {};\r\n return array.reduce((obj, item) => {\r\n return {\r\n ...obj,\r\n [item[key]]: item[value],\r\n };\r\n }, initialValue);\r\n};\r\n//#endregion\r\n\r\n//#region array helper functions\r\nexport const moveItem = (list, fromIndex, toIndex) => {\r\n //const list = Array.from(array);\r\n const [removed] = list.splice(fromIndex, 1);\r\n list.splice(toIndex, 0, removed);\r\n\r\n return list;\r\n};\r\n\r\nexport const removeItem = (list, index) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 1);\r\n\r\n return list;\r\n};\r\n\r\nexport const insertItem = (list, index, item) => {\r\n //const list = Array.from(array);\r\n list.splice(index, 0, item);\r\n\r\n return list;\r\n};\r\n\r\n\r\nexport const find = (list, fn) => {\r\n if (!list) return null;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return list[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findIndex = (list, fn) => {\r\n if (!list) return -1;\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nexport const contains = (list, fn) => {\r\n return findIndex(list, fn) >= 0;\r\n}\r\n\r\n// utils.array.distinct(images, (x, y) => x.imageUrl === y.imageUrl)\r\nexport const distinct = (list, comparer) => {\r\n const filtered = []\r\n for (let i = 0; i < list.length; i++) {\r\n if (!contains(filtered, (x) => comparer(x, list[i]))) {\r\n filtered.push(list[i])\r\n }\r\n }\r\n return filtered;\r\n}\r\n\r\nexport const sum = (list, fn) => {\r\n if (!list) return 0;\r\n let total = 0;\r\n for (let i = 0; i < list.length; i++) {\r\n total += fn(list[i]) || 0\r\n }\r\n return total\r\n}\r\n\r\nexport const equal = (list1, list2, fn) => {\r\n if (!list1 && !list2) return true;\r\n if (!list1 || !list2) return false;\r\n if (list1.length !== list2.length) return false;\r\n for (let i = 0; i < list1.length; i++) {\r\n let found = false;\r\n for (let j = 0; j < list2.length; j++) {\r\n if(fn(list1[i], list2[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) return false;\r\n }\r\n return true;\r\n}\r\n//#endregion\r\n\r\n//#region sorting helpers\r\nexport const caseInsensitiveCompare = function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n}\r\n\r\n// put the null items at the end.\r\nexport const compareIgnoreEmpty = function (asc) {\r\n return asc ?\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || +(a > b) || -(a < b);\r\n }\r\n :\r\n function (a, b) {\r\n return (a === null || isNaN(a)) - (b === null || isNaN(b)) || -(a > b) || +(a < b);\r\n }\r\n}\r\n//#endregion","import parse from \"date-fns/parse\";\r\nimport parseISO from \"date-fns/parseISO\";\r\nimport format from \"date-fns/format\";\r\n\r\n//#region manipulation\r\nexport const addDays = (date, days) => {\r\n var result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n};\r\n//#endregion\r\n\r\n//#region format\r\nexport function formatDate(dateObj, formatStr) {\r\n const date = toDate(dateObj);\r\n if (!date) return \"\";\r\n return format(date, formatStr);\r\n}\r\n\r\nexport function formatYYYYMMDD(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${yyyy}-${mm}-${dd}`;\r\n}\r\n\r\nexport function formatDDMMYYYY(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return \"\";\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = \"0\" + dd;\r\n }\r\n if (mm < 10) {\r\n mm = \"0\" + mm;\r\n }\r\n return `${dd}-${mm}-${yyyy}`;\r\n}\r\n//#endregion\r\n\r\n//#region parse\r\nexport function toDate(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd\") ||\r\n parseDate(dateObj, \"yyyy-M-d\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy\") ||\r\n parseDate(dateObj, \"d/M/yyyy\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function toDateTime(dateObj) {\r\n if (!dateObj) return null;\r\n if (typeof dateObj === \"string\") {\r\n return (\r\n parseDate(dateObj, \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-MM-dd HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"yyyy-M-d HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"dd/MM/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseDate(dateObj, \"d/M/yyyy HH:mm:ss.SSSxxx\") ||\r\n parseISO(dateObj)\r\n );\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function parseDate(dateStr, format) {\r\n const date = parse(dateStr, format, new Date());\r\n return date && isValidDate(date) ? date : null;\r\n}\r\n\r\nexport function isValidDate(d) {\r\n return d instanceof Date && !isNaN(d);\r\n}\r\n//#endregion\r\n","//#region background images\r\nexport const bgUrl = (imageUrl) => {\r\n return `background-image:url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n\r\nexport const bgUrlStyle = (imageUrl) => {\r\n return `url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n//#endregion\r\n\r\n//#region screen/element size\r\nexport const screenWidth = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerWidth ||\r\n document.documentElement.clientWidth ||\r\n document.body.clientWidth\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const screenHeight = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const outerWidth = el => el.offsetWidth\r\nexport const outerHeight = el => el.offsetHeight\r\n//#endregion\r\n\r\n//#region css class\r\n/**\r\n * Check if element has the css class on it.\r\n */\r\nexport const hasClass = (el, className) => {\r\n if (el.classList) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!el.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`))\r\n}\r\n\r\n/**\r\n * Adds the provided css className to the element.\r\n */\r\nexport const addClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.add(className)\r\n return\r\n }\r\n\r\n if (!hasClass(el, className)) {\r\n el.className += ` ${className}`\r\n }\r\n}\r\n\r\n/**\r\n * Remove the provided css className from the element.\r\n */\r\nexport const removeClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.remove(className)\r\n return\r\n }\r\n\r\n if (hasClass(el, className)) {\r\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`)\r\n el.className = el.className.replace(reg, ' ')\r\n }\r\n}\r\n\r\n/**\r\n * Adds or removes a class name on the input depending on the status flag.\r\n */\r\nexport const toggleClass = (el, className, status) => {\r\n if (!el || !className) return\r\n\r\n if (status) {\r\n return addClass(el, className)\r\n }\r\n\r\n removeClass(el, className)\r\n}\r\n//#endregion","import { gsap } from 'gsap';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\n\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport function scrollTo(selector, duration = 750, delay = 0) {\r\n const el = findElement(selector);\r\n if (el) {\r\n setTimeout(() => {\r\n //console.log(element);\r\n const offset = elementOffset(el);\r\n //console.log(offset)\r\n //window.scrollTo(0, offset.top - 300);\r\n\r\n gsap.to(window, {duration: (duration/1000), scrollTo: offset.top - 100, ease: 'power1'});\r\n\r\n }, delay);\r\n //el.scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' }); }, timeout);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function findElement(selector) {\r\n if (typeof selector !== 'string') return selector;\r\n\r\n let found = querySelectorOrNull(selector)\r\n || querySelectorOrNull('#' + selector)\r\n || querySelectorOrNull('.' + selector)\r\n \r\n return found;\r\n}\r\n\r\nexport function querySelectorOrNull(selector) {\r\n try {\r\n return document.querySelector(selector);\r\n } catch(e){\r\n return null;\r\n };\r\n}\r\n\r\nexport function elementOffset(el) {\r\n var rect = el.getBoundingClientRect(),\r\n scrollLeft = typeof window !== `undefined` ? (window.pageXOffset || document.documentElement.scrollLeft) : 0,\r\n scrollTop = typeof window !== `undefined` ? (window.pageYOffset || document.documentElement.scrollTop) : 0;\r\n\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft, width: el.offsetWidth, height: el.offsetHeight }\r\n}\r\n\r\nexport function isElementInViewport (el) {\r\n if (typeof window !== `undefined`) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\r\n );\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nexport function getCurrentBreakpoint() {\r\n if (typeof window === `undefined`) return null;\r\n \r\n const bpHolder = document.querySelector('.devMediaQueryStatus__current');\r\n if (!bpHolder) return null;\r\n return window.getComputedStyle(bpHolder, ':before').getPropertyValue('content').replace(/[\"']/g, '');\r\n}\r\n\r\n","export function formatMoney(number, fraction = 0) {\r\n var formatter = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n minimumFractionDigits: fraction,\r\n });\r\n\r\n return formatter.format(number);\r\n}\r\n\r\nexport function toMonthlyCost(amount, frequency) {\r\n if (!amount) return 0;\r\n if (frequency === 'Week') {\r\n return amount * 52.1429 / 12.0;\r\n } else if (frequency === 'Fortnight') {\r\n return amount * 52.1429 / 2.0 / 12.0;\r\n } else if (frequency === 'Month') {\r\n return amount;\r\n } else if (frequency === 'Quarter') {\r\n return amount * 4.0 / 12.0;\r\n } else if (frequency === 'Year') {\r\n return amount / 12.0;\r\n } else {\r\n return amount;\r\n }\r\n}\r\n","export function isBlank(str) {\r\n return (!str || /^\\s*$/.test(str))\r\n}\r\n\r\nexport function isEmpty(str) {\r\n return (!str || str.length === 0)\r\n}\r\n\r\nexport function isNumeric(num){\r\n return !isNaN(num)\r\n}\r\n\r\nexport function capitalize(expression) {\r\n return expression.charAt(0).toUpperCase() + expression.slice(1);\r\n}\r\n\r\nexport function toFieldName(str) {\r\n if (!str) return null;\r\n return capitalize((str.replace(/([A-Z]+)/g, ' $1').replace(/([A-Z][a-z])/g, ' $1')).trim());\r\n}\r\n\r\nexport function toHtml(str) {\r\n if (!str) return null;\r\n return str.replace(/[\\n\\r]/g, '
')\r\n}\r\n\r\n// Shorten a string to less than maxLen characters without truncating words.\r\nexport function truncateWords(str, maxLen, separator = ' ', ellipsis = '...') {\r\n if (str.length <= maxLen) return str\r\n var pos = str.lastIndexOf(separator, maxLen)\r\n return str.substr(0, pos) + ellipsis\r\n}\r\n\r\nexport function numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n}\r\n\r\nexport const formatNumber = (value) => {\r\n if (value === 0) return '0';\r\n if (!value) return '';\r\n return Math.round(value * 100) / 100\r\n}\r\n\r\nexport const toTelephoneNumber = (str) => {\r\n return (str || []).replace(/[^+\\d]+/g, \"\");\r\n\r\n}\r\n\r\n// utils.text.like('text here', '%keyword%')\r\nexport const like = (str, search) => {\r\n if (typeof search !== 'string' || str === null) { return false; }\r\n // Remove special chars\r\n search = search.replace(new RegExp(\"([\\\\.\\\\\\\\\\\\+\\\\*\\\\?\\\\[\\\\^\\\\]\\\\$\\\\(\\\\)\\\\{\\\\}\\\\=\\\\!\\\\<\\\\>\\\\|\\\\:\\\\-])\", \"g\"), \"\\\\$1\");\r\n // Replace % and _ with equivalent regex\r\n search = search.replace(/%/g, '.*').replace(/_/g, '.');\r\n // Check matches\r\n return RegExp('^' + search + '$', 'gi').test(str);\r\n\r\n}","import shortid from 'shortid';\r\nimport uuid from 'uuid/v4';\r\n\r\nexport function shortId() {\r\n return shortid();\r\n}\r\n\r\nexport function guid() {\r\n return uuid();\r\n}","export function toCamel(o) {\r\n var newO, origKey, newKey, value\r\n if (o instanceof Array) {\r\n return o.map(function(value) {\r\n if (typeof value === \"object\") {\r\n value = toCamel(value)\r\n }\r\n return value\r\n })\r\n } else {\r\n newO = {}\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()\r\n value = o[origKey]\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = toCamel(value)\r\n }\r\n newO[newKey] = value\r\n }\r\n }\r\n }\r\n return newO\r\n}","import { getFilename } from './url';\r\nimport { contains } from './array';\r\nexport function getImageSetPath(url, setId) {\r\n const info = getPathDetails(url)\r\n if (!info) return url;\r\n //console.log(url, info);\r\n return info.baseFolder + \"/@\" + setId + '/' + info.filename\r\n}\r\n\r\nexport function getPathDetails(url, setIds) {\r\n if (!url) return null;\r\n const parts = url.split('/').slice(0, -1);\r\n if (parts.length <= 1) return { baseFolder: '/', setId: null, filename: getFilename(url) };\r\n\r\n const lastFolder = parts[parts.length - 1];\r\n const hasSet = setIds && setIds.length > 0 ? contains(setIds, x => x === lastFolder) : lastFolder.indexOf('@') === 0;\r\n\r\n return hasSet ?\r\n { baseFolder: parts.slice(0, -1).join('/'), setId: lastFolder, filename: getFilename(url) } :\r\n { baseFolder: parts.join('/'), setId: null, filename: getFilename(url) }\r\n}","import classNames from 'classnames';\r\nimport * as url from './url';\r\nimport * as form from './form';\r\nimport * as array from './array';\r\nimport * as date from './date';\r\nimport * as css from './css';\r\nimport * as ui from './ui';\r\nimport * as money from './money';\r\nimport * as text from './text';\r\nimport * as random from './random';\r\nimport * as object from './object';\r\nimport * as media from './media';\r\n\r\nexport default { classNames, url, form, array, date, css, ui, money, text, random, object, media};","import utils from \"utils\";\nimport env from 'env';\n\nexport const isMobile = () => {\n var width = utils.css.screenWidth()\n return width < 768\n}\n\nexport function resourcePath(url){\n return utils.url.isExternalLink(url)? url : env.resourceBase + url;\n}","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\nimport siteConfig from '../../config';\r\n\r\nexport function useApi(fn) {\r\n //console.log('useApi')\r\n const [response, setResponse] = useState({});\r\n const [errors, setErrors] = useState([]);\r\n const [status, setStatus] = useState('ready');\r\n const [request, setRequest] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!request) return;\r\n\r\n //console.log('fetch now')\r\n setResponse(null);\r\n setErrors([]);\r\n setStatus('ready');\r\n\r\n const fetchData = async () => {\r\n setStatus('pending');\r\n try {\r\n //console.log(request);\r\n const options = request.options || {}\r\n siteConfig.apiNetJwt && await siteConfig.apiNetJwt(options);\r\n\r\n const res = await fetch(request.url, options);\r\n //console.log(res);\r\n\r\n if (!res.ok) {\r\n try {\r\n const json = await res.json();\r\n console.log(json);\r\n\r\n if (json.message) {\r\n setErrors([json.message]);\r\n setStatus('error')\r\n return;\r\n }\r\n } catch (e) { }\r\n\r\n const statusText = res.status === 401 ? 'Permission denied. Please login first.' : res.statusText\r\n setErrors(['Error - [' + res.status + ']' + (statusText && (' - ' + statusText))]);\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n //const json = await res.json();\r\n const text = await res.text();\r\n const json = text && text.length ? JSON.parse(text) : null;\r\n //console.log(json);\r\n\r\n // check if ajax result from c#\r\n if (json && json.errors && json.errors.length > 0) {\r\n setErrors(utils.form.getErrors(json));\r\n setStatus('error')\r\n return;\r\n }\r\n\r\n setResponse(json);\r\n setStatus('done')\r\n } catch (err) {\r\n //console.log(error, error.toString(), typeof error, JSON.stringify(error))\r\n setErrors([err.toString()]);\r\n setStatus('error')\r\n }\r\n };\r\n fetchData();\r\n }, [request]);\r\n\r\n const containsErrorMessage = (msg) => {\r\n const finding = (msg || '').toLowerCase()\r\n return errors.some(x => (x || '').toLowerCase().indexOf(finding) >= 0)\r\n }\r\n\r\n //return [ response, error, status, (...args) => setRequest(fn(...args)) ];\r\n return {\r\n request: request,\r\n response: response,\r\n errors: errors,\r\n status: status,\r\n hasErrors: () => status === 'error',\r\n containsErrorMessage: containsErrorMessage,\r\n addErrors: (errs) => {\r\n setErrors(...errors, ...errs)\r\n setStatus('error')\r\n },\r\n done: () => status === 'done',\r\n send: (...args) => { setStatus('ready'); setRequest(fn(...args)) },\r\n sendRaw: (httpOptionFn, ...args) => { setStatus('ready'); setRequest(httpOptionFn(...args)) },\r\n setResult: (json) => { setResponse(json); setStatus('done') },\r\n reset: () => {\r\n setStatus('ready');\r\n setErrors([]);\r\n }\r\n };\r\n}\r\n\r\nexport function usePost() {\r\n const formDataFn = (url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n body: data // FormData\r\n }\r\n });\r\n const post = useApi((url, data, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data)\r\n }\r\n })\r\n );\r\n return {\r\n ...post,\r\n loading: () => post.status === 'ready' || post.status === 'pending',\r\n sending: () => post.status === 'pending',\r\n sendFormData: (...args) => post.sendRaw(formDataFn, ...args)\r\n }\r\n}\r\n\r\nexport function useGet() {\r\n const get = useApi((url, options = {}) =>\r\n ({\r\n url: url,\r\n options: {\r\n ...options,\r\n method: 'GET'\r\n }\r\n })\r\n );\r\n return {\r\n ...get,\r\n loading: () => get.status === 'ready' || get.status === 'pending'\r\n }\r\n}\r\n\r\n//https://medium.com/@jaryd_34198/seamless-api-requests-with-react-hooks-part-2-3ab42ba6ad5c","import React from 'react';\r\nimport env from '../../env';\r\n\r\nexport function MediaQueryStatus(props) {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet-async';\r\n\r\nexport function MetaTag({ data: seoData }) {\r\n //console.log(seoData)\r\n const data = Object.assign({}, {\r\n title: ''\r\n }, seoData)\r\n\r\n return (<>\r\n \r\n {data.title}\r\n {data.description && }\r\n {data.keywords && }\r\n {data.language && }\r\n {data.country && }\r\n {\r\n (data.faceBookDomainVerifi && data.faceBookDomainVerifi !== '') &&\r\n \r\n }\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n \r\n \r\n \r\n {data.description && }\r\n {data.heroImageUrl && }\r\n\r\n\r\n \r\n\r\n {(data.alternates || []).map((x, index) => )}\r\n\r\n \r\n )\r\n}\r\n\r\n\r\n// function MetaContent({ name, content }) {\r\n// console.log(name, content)\r\n// if (!content) return null;\r\n// return \r\n// }\r\n\r\n","import env from '../../env';\r\n\r\nexport const pageView = (url) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmPageView(url)\r\n if (hasGtag()) gaPageView(url)\r\n if (hasFBPixel()) fbPageView(url)\r\n}\r\n\r\nexport const sendFormEvent = (formName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n const p = Object.assign({ 'gtm.elementId': formName }, params || {})\r\n\r\n if (hasGTM()) gtmSendEvent('form', p)\r\n if (hasGtag()) gaSendEvent('form', p)\r\n if (hasFBPixel()) fbSendEvent('form', p)\r\n}\r\n\r\nexport const sendEvent = (eventName, params) => {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.warn(`Tracking is deprecated.`, `Use seperate tracking helper instead`);\r\n }\r\n if (hasGTM()) gtmSendEvent(eventName, params)\r\n if (hasGtag()) gaSendEvent(eventName, params)\r\n if (hasFBPixel()) fbSendEvent(eventName, params)\r\n}\r\n\r\n//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const gtmPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: {\r\n path: url\r\n }\r\n })\r\n }\r\n}\r\nexport const gtmSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Gtag / GA\r\nexport const hasGtag = () => {\r\n return !!(typeof window !== `undefined` && window.gtag);\r\n}\r\n\r\nexport const gaPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts) {\r\n env.gaAccounts.forEach(id => {\r\n window.gtag('config', id, { 'page_path': url });\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport const gaSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n if (env.gaAccounts && env.gaAccounts.length > 0) {\r\n window.gtag('event', eventName, params || {});\r\n }\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region Facebook Pixel\r\nexport const hasFBPixel = () => {\r\n return !!(typeof window !== `undefined` && window.fbq);\r\n}\r\n\r\nexport const fbPageView = (url) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', 'PageView');\r\n }\r\n}\r\n\r\nexport const fbSendEvent = (eventName, params) => {\r\n if (typeof window !== `undefined`) {\r\n window.fbq('track', eventName, params || {});\r\n }\r\n}\r\n//#endregion\r\n\r\n\r\n\r\n","import utils from '../../utils';\r\n\r\nexport const MAX = 100000;\r\nexport const MIN = -100000;\r\n\r\nexport function getScrollProgress(el) {\r\n if (typeof window !== `undefined`) {\r\n const scroll = window.scrollY || window.pageYOffset\r\n if (!el) {\r\n console.log('not exists', el)\r\n return {\r\n progress: 0,\r\n top: scroll\r\n }\r\n }\r\n const boundsTop = el.getBoundingClientRect().top + scroll\r\n\r\n const viewport = {\r\n top: scroll,\r\n bottom: scroll + window.innerHeight,\r\n height: window.innerHeight\r\n }\r\n\r\n const bounds = {\r\n top: boundsTop,\r\n bottom: boundsTop + el.clientHeight,\r\n height: el.clientHeight\r\n }\r\n\r\n //const scrollTop = window.scrollY || window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n // const status = {\r\n // viewport: viewport,\r\n // bound: bounds,\r\n // inViewport: (bounds.bottom >= viewport.top && bounds.bottom <= viewport.bottom)\r\n // || (bounds.top <= viewport.bottom && bounds.top >= viewport.top)\r\n // }\r\n\r\n //console.log((viewport.bottom - bounds.top) / (bounds.height + viewport.height))\r\n return {\r\n progress: (viewport.bottom - bounds.top) / (bounds.height + viewport.height),\r\n top: (viewport.bottom - bounds.top) / (viewport.height)\r\n }\r\n } else {\r\n return {\r\n progress: 0,\r\n top: 0\r\n }\r\n }\r\n}\r\n\r\n//au.setClass(section, 'animated', pr, [0.3, au.MAX])\r\nexport function setClass(el, className, pr, range)\r\n{\r\n if (pr >= range[0] && pr <= range[1]) {\r\n utils.css.addClass(el, className);\r\n } else {\r\n utils.css.removeClass(el, className);\r\n }\r\n}\r\n\r\nexport function prVal(min, max, pr, range = [0, 1]) {\r\n //console.log(min, max, typeof min, typeof to)\r\n if (pr < range[0]) return min;\r\n if (pr > range[1]) return max;\r\n return min + (max - min) * ((pr - range[0])/(range[1] - range[0]));\r\n}\r\n\r\nexport function transform(el, x, y) {\r\n el.style.transform = 'translate(' + x + ',' + y + ')';\r\n}\r\n\r\nexport function removeTransform(el) {\r\n\r\n}\r\n\r\n// requestAnimationFrame\r\n// const raf =\r\n// (window).requestAnimationFrame ||\r\n// (window).webkitRequestAnimationFrame ||\r\n// (window).mozRequestAnimationFrame ||\r\n// function (callback) {\r\n// (window).setTimeout(callback, 1000 / 60)\r\n// }\r\nexport function getScreenSize() {\r\n const w = utils.css.screenWidth()\r\n const h = utils.css.screenHeight()\r\n return { width: w, height: h };\r\n}\r\n","const defaultHolder = typeof window !== `undefined` ? window : {};\r\nconst storeName = '__j6_lazy_js'\r\n\r\nexport function loadJs(...scripts) {\r\n const promises = [];\r\n scripts.forEach((script) => promises.push(loadScript(script, defaultHolder)));\r\n return Promise.all(promises);\r\n}\r\n\r\nexport function loadedJs(url, holder = defaultHolder) {\r\n if (!holder[storeName]) return false;\r\n return holder[storeName][url] && holder[storeName][url].loaded\r\n}\r\n\r\nexport function loadScript(url, holder_, forceToReload = false) {\r\n const holder = holder_ || defaultHolder\r\n if (!holder[storeName]) holder[storeName] = {};\r\n\r\n return new Promise((resolve, reject) => {\r\n //resolve if already loaded\r\n if (!forceToReload && holder[storeName][url] && holder[storeName][url].loaded) {\r\n resolve({ script: url, loaded: true, networkLoaded: false , status: 'Already Loaded' });\r\n }\r\n else {\r\n // remove previous\r\n const existing = document.querySelector('script[src=\"' + url +'\"]')\r\n if (existing) existing.remove();\r\n\r\n // load script\r\n let script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = url;\r\n script.onload = () => {\r\n holder[storeName][url] = { loaded: true };\r\n resolve({ script: url, loaded: true, networkLoaded: true, status: 'Loaded' });\r\n };\r\n script.onerror = (error) => resolve({ script: url, loaded: false, status: 'Load failed' });\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n });\r\n}","import { useLayoutEffect } from 'react';\r\n//import useWindowScroll from '@react-hook/window-scroll';\r\nimport { au } from '../../components';\r\n\r\n/* background image height =\r\n + cutoff padding = always hidden padding - usually 10 px\r\n + panel height (desired parallax panel height)\r\n + padding height = panel height * padding height ratio\r\n + cutoff padding = always hidden padding - usually 10 px\r\n*/\r\n\r\nconst defaultSettings = {\r\n cutoffPadding: 10,\r\n speed: 15, // 5% of image/100px scroll\r\n //paddingHeightRatio: 0.3\r\n //screenSize\r\n}\r\n\r\nexport const ParallaxData = {\r\n settings: {\r\n screenSize: null\r\n },\r\n panels: [\r\n { selector: '.parallax', imageRatio: 1080 / 1920, panelHeight: 'auto' },\r\n ],\r\n elements: [],\r\n timeoutId: null\r\n}\r\n\r\nexport function useParallax() {\r\n const handleScroll = () => {\r\n //console.log('useParallax - scrolling')\r\n onScroll(ParallaxData);\r\n }\r\n\r\n const reset = () => {\r\n //console.log('useParallax - reset');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n }\r\n\r\n useLayoutEffect(() => {\r\n //console.log('useParallax - effect');\r\n setTimeout(() => { init(ParallaxData); handleScroll(); }, 300)\r\n if (typeof window !== `undefined`) {\r\n window.addEventListener('scroll', handleScroll)\r\n window.addEventListener('resize', reset)\r\n }\r\n return () => {\r\n //console.log('useParallax - removed');\r\n if (typeof window !== `undefined`) {\r\n window.removeEventListener('scroll', handleScroll)\r\n window.removeEventListener('resize', reset)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n return { reset };\r\n};\r\n\r\n// export function useParallax(opt) {\r\n// // const settings = Object.assign({}, defaultSettings, opt);\r\n\r\n// const [resetCounter, setResetCounter] = useState(0);\r\n// const [parallaxData,] = useState(ParallaxData);\r\n\r\n// //const scrollY = useWindowScroll(60 /*fps*/)\r\n// const reset = () => {\r\n// setResetCounter(resetCounter + 1);\r\n// }\r\n\r\n// const handleScroll = () => {\r\n// onScroll(parallaxData);\r\n// }\r\n\r\n// useLayoutEffect(() => {\r\n// console.log('useParallax - effect');\r\n\r\n// setTimeout(() => { init(parallaxData); handleScroll(); }, 300)\r\n\r\n// //const handleScroll = (): void => setThrottledScroll(getScrollY())\r\n// window.addEventListener('scroll', handleScroll)\r\n// window.addEventListener('resize', handleScroll)\r\n// return (): void => {\r\n// window.removeEventListener('scroll', handleScroll)\r\n// window.removeEventListener('resize', handleScroll)\r\n// }\r\n\r\n// // eslint-disable-next-line \r\n// }, [resetCounter]);\r\n// //console.log(scrollY, resetCounter)\r\n\r\n// return { reset };\r\n// };\r\n\r\nexport function init(data) {\r\n //console.log('parallax init');\r\n const screenSize = data.settings.screenSize = au.getScreenSize();\r\n data.settings = Object.assign({}, defaultSettings, data.settings)\r\n let cnt = 0;\r\n data.panels.forEach(panel => {\r\n const elements = document.querySelectorAll(panel.selector) || [];\r\n for (let i = 0; i < elements.length; i++) {\r\n cnt++;\r\n const el = elements[i];\r\n //const el = document.querySelector(panel.selector);\r\n //console.log(panel.selector, el)\r\n //if (!el) { panel.el = null; return; }\r\n const autoPanelHeight = !panel.panelHeight || panel.panelHeight === 'auto';\r\n const panelHeight = autoPanelHeight ? el.offsetHeight : parseFloat(panel.panelHeight);\r\n //console.log(autoPanelHeight, panelHeight)\r\n\r\n const calculated = { shadowHeight: 0, shadowWidth: 0, fromTop: 0, toTop: 0 };\r\n // calculated.shadowHeight = panelHeight * (1 + data.settings.paddingHeightRatio) + 2 * data.settings.cutoffPadding;\r\n // calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n // if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // // magnifying the background image to fix the full width of the browser\r\n // calculated.shadowWidth = data.settings.screenSize.width;\r\n // calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n // }\r\n\r\n const speed = data.settings.speed * (screenSize.width > 1000 ? 1 : 2) \r\n let baseHeight = data.settings.screenSize.width * panel.imageRatio > panelHeight ? data.settings.screenSize.width * panel.imageRatio : panelHeight\r\n baseHeight = baseHeight + (data.settings.screenSize.height + panelHeight) * (speed * 0.01)\r\n calculated.shadowHeight = baseHeight + 2 * data.settings.cutoffPadding;\r\n calculated.shadowWidth = calculated.shadowHeight / panel.imageRatio;\r\n if (calculated.shadowWidth < data.settings.screenSize.width) {\r\n // magnifying the background image to fix the full width of the browser\r\n calculated.shadowWidth = data.settings.screenSize.width;\r\n calculated.shadowHeight = calculated.shadowWidth * panel.imageRatio;\r\n }\r\n\r\n calculated.fromTop = -data.settings.cutoffPadding;\r\n calculated.toTop = -calculated.shadowHeight + panelHeight + data.settings.cutoffPadding;\r\n\r\n if (!autoPanelHeight)\r\n (el).style.height = panel.panelHeight + 'px';\r\n\r\n (el).style.backgroundSize = calculated.shadowWidth + 'px ' + calculated.shadowHeight + 'px'\r\n\r\n //panel.el = el;\r\n panel.calculated = calculated;\r\n data.elements.push({ el: el, calculated: calculated });\r\n //console.log(panelHeight, baseHeight, calculated)\r\n }\r\n })\r\n\r\n //console.log('parallax init - ' + cnt)\r\n if (cnt === 0) {\r\n if (data.timeoutId) {\r\n try {\r\n if (typeof window !== `undefined`) { \r\n window.clearTimeout(data.timeoutId)\r\n }\r\n } catch(e){}\r\n }\r\n // reschedule\r\n if (typeof window !== `undefined`) { \r\n data.timeoutId = window.setTimeout(() => init(data), 500)\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function onScroll(data) {\r\n //console.log(data);\r\n data.elements.forEach(element => {\r\n if (!element.el) return;\r\n const pr = au.getScrollProgress(element.el).progress;\r\n //console.log(pr);\r\n\r\n const min = element.calculated.fromTop;\r\n const max = element.calculated.toTop;\r\n const top = au.prVal(min, max, pr, [0, 1]);\r\n //console.log(top);\r\n (element.el).style.backgroundPositionY = top + 'px'\r\n })\r\n\r\n}","import { useMemo } from 'react';\r\nimport { useParams, useLocation, useHistory, useRouteMatch, Redirect } from 'react-router-dom';\r\nimport queryString from 'query-string';\r\n\r\nexport function useRouter() {\r\n const params = useParams();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const match = useRouteMatch();\r\n\r\n // Return our custom router object\r\n // Memoize so that a new object is only returned if something changes\r\n return useMemo(() => {\r\n return {\r\n // For convenience add push(), replace(), pathname at top level\r\n navigate: history.push,\r\n push: history.push,\r\n Redirect: Redirect,\r\n replace: history.replace,\r\n pathname: location.pathname,\r\n path: location.pathname + location.hash + location.search,\r\n // Merge params and parsed query string into single \"query\" object\r\n // so that they can be used interchangeably.\r\n // Example: /:topic?sort=popular -> { topic: \"react\", sort: \"popular\" }\r\n query: {\r\n ...queryString.parse(location.search), // Convert string to object\r\n ...params\r\n },\r\n // Include match, location, history objects so we have\r\n // access to extra React Router functionality if needed.\r\n match,\r\n location,\r\n history\r\n };\r\n }, [params, match, location, history]);\r\n}","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}","const initialState = {\n page: null,\n menu: null,\n popup: null\n};\n\nconst reducer = (state = initialState, action) => {\n //console.log('reducer', action)\n switch (action.type) {\n case 'SET_PAGE':\n return {\n ...state,\n page: action.payload\n };\n case 'SET_MENU':\n return {\n ...state,\n menu: action.payload\n };\n case 'SET_POPUP':\n return {\n ...state,\n popup: action.payload\n };\n case 'SET_STATE':\n return {\n ...state,\n ...action.payload\n };\n default:\n throw new Error(\"Unexpected action\");\n }\n};\n\nexport { initialState, reducer };","import React, { createContext, useReducer, useContext, useEffect } from 'react';\nimport { initialState, reducer } from './reducers';\n\nconst StoreContext = createContext(initialState);\n\nconst StoreProvider = ({ children }) => {\n // Get state and dispatch from Reacts new API useReducer. \n const [state, dispatch] = useReducer(reducer, initialState);\n //console.log('StoreProvider')\n // Log new state\n useEffect(() => {\n //console.log('-- new state', state);\n //console.trace();\n }, [state]);\n // Render state, dispatch and special case actions\n return (\n \n {children}\n \n );\n};\nexport { StoreContext, StoreProvider };\n\nexport const useStore = () => useContext(StoreContext);","import utils from '../../utils';\r\n\r\nexport function handleElementLink(el, externalHandler) {\r\n // externalHandler = (url) => {\r\n // if (typeof window !== `undefined`) window.location.href = url;\r\n // }\r\n\r\n const link = utils.url.getLinkFromElement(el);\r\n const linkInfo = utils.url.getLinkInfo(link);\r\n //console.log(link, linkInfo)\r\n if (!linkInfo) return { handled: false, linkInfo: linkInfo };\r\n\r\n if (linkInfo.type === 'hash') {\r\n utils.ui.scrollTo(linkInfo.url);\r\n } else if (linkInfo.type === 'tel' || linkInfo.type === 'mailto') {\r\n\r\n } else if (linkInfo.type === 'external' && externalHandler) {\r\n // let the external handler process.\r\n externalHandler(linkInfo.url);\r\n return { handled: true, linkInfo: linkInfo };;\r\n }\r\n return { handled: false, linkInfo: linkInfo };\r\n}","import React from 'react'; \r\nimport { Link } from 'react-router-dom';\r\nimport utils from '../../utils';\r\nimport { handleElementLink } from './handleLink';\r\n\r\nexport function SiteLink(props) {\r\n const { children, to, target, onClick, ...other } = props;\r\n\r\n function goToLink(e) {\r\n //console.log(e, e.target);\r\n if (onClick) onClick(e);\r\n const processed = handleElementLink(e.target);\r\n //console.log(processed)\r\n if (processed.handled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n return utils.url.isExternalLink(to) ?\r\n goToLink(e)} {...other}>{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\n\r\nconst matches = (mediaQuery) => !!window.matchMedia(mediaQuery).matches\r\nconst isMin = {};\r\nbreakpointNames.forEach((bp, index) => isMin[bp] = () => matches(`(min-width: ${breakpoints[index]}px)`))\r\n\r\nconst isMax = {};\r\nbreakpointNames.forEach((bp, index) => isMax[bp] = () => matches(`(max-width: ${breakpoints[index] - 1}px)`))\r\n\r\nexport { mq, mqMin, mqMax, isMin, isMax }","export function overlay() {\r\n return {\r\n content: `''`,\r\n position: 'absolute',\r\n top:0,\r\n bottom:0,\r\n left: 0,\r\n right: 0,\r\n transition: 'all 0.5s'\r\n }\r\n}","import { 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 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}","import React, { useState, useRef } from 'react';\r\nimport utils from '../../utils';\r\nimport { debounce } from '../utils-core/debounce';\r\nimport * as yt from './iframeApi';\r\nimport { FiVolumeX, FiVolume2 } from 'react-icons/fi';\r\n\r\nexport function YoutubeBanner(props) {\r\n const youtubeBannerRef = React.useRef(null);\r\n\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 { 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 : !!(typeof props.canPlayVideo === 'function'? props.canPlayVideo() : props.canPlayVideo);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 0,\r\n 'loop': 1,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n //console.log('videoId: ' + videoId)\r\n //const canPlayVideo = () => window.innerWidth >= 1200\r\n React.useEffect(() => {\r\n const resized = debounce(() => {\r\n loadVideo();\r\n });\r\n loadVideo();\r\n if (typeof window !== `undefined`)\r\n window.addEventListener('resize', resized)\r\n return () => {\r\n if (typeof window !== `undefined`)\r\n window.removeEventListener('resize', resized)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n \r\n function loadVideo() {\r\n if (youtubeBannerRef.current)\r\n setPlayerSize(getSize(youtubeBannerRef.current));\r\n if (canPlayVideo()) {\r\n yt.loadApi((loadJs) => {\r\n loadJs ? init() : setTimeout(init, 100)\r\n })\r\n }\r\n }\r\n\r\n function init() {\r\n let player = null;\r\n if (typeof window !== `undefined`) {\r\n player = new window.YT.Player(playerId, {\r\n events: {\r\n 'onStateChange': (e) => {\r\n switch (e.data) {\r\n // case window.YT.PlayerState.PLAYING:\r\n // break;\r\n // case window.YT.PlayerState.PAUSED:\r\n // break;\r\n case window.YT.PlayerState.ENDED:\r\n const countPlayed = countPlayedRef.current;\r\n if (countPlayed < 3 - 1) {\r\n //console.log('ended', countPlayed + 1);\r\n countPlayedRef.current = countPlayed + 1;\r\n if (player && player.playVideo)\r\n player.playVideo();\r\n } else {\r\n setPlayerStatus('finished');\r\n }\r\n break;\r\n default:\r\n }\r\n },\r\n 'onReady': (e) => {\r\n //console.log('onReady');\r\n if (player && player.mute && player.playVideo) {\r\n player.mute();\r\n player.playVideo();\r\n }\r\n setTimeout(() => setPlayerStatus('loaded'), 1000)\r\n },\r\n 'onError': (e) => { console.log(e) }\r\n }\r\n });\r\n\r\n setYtPlayer(player);\r\n }\r\n }\r\n\r\n function soundToggle(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (ytPlayer){\r\n if (muted) {\r\n setMuted(false);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.unMute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n } else {\r\n setMuted(true);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.mute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n }\r\n }\r\n\r\n //https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\r\n }\r\n const canPlay = canPlayVideo();\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {canPlay && playerSize && }\r\n {canPlay && playerStatus === 'loaded' &&
\r\n {muted? : }\r\n
}\r\n
\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","// https://www.pluralsight.com/guides/re-render-react-component-on-window-resize\r\nexport function debounce(fn, ms) {\r\n let timer\r\n return _ => {\r\n clearTimeout(timer)\r\n timer = setTimeout(_ => {\r\n timer = null\r\n fn.apply(this, arguments)\r\n }, ms)\r\n };\r\n}","function payload(item, key, defaultVal = '') {\n const found = item.payloads.find(x => x.key === key);\n return found ? found.value : defaultVal;\n}\n\n\nfunction getCodeJson(item) {\n const code = payload(item, 'Code');\n const codeType = payload(item, 'CodeType');\n if (codeType === 'Json') {\n const codeJson = JSON.parse(code);\n return codeJson\n }\n return null\n}\n\n\nfunction hasItemInPageDataByItemTypeCode(pageData, itemTypeCode) {\n return hasItemInPageData(pageData, item => item.itemTypeCode === itemTypeCode);\n}\n\n// hasItemInPageData(cmsOption.pageData, '')\n// matchFn = (item) => item.itemTypeCode === itemTypeCode\nfunction hasItemInPageData(pageData, matchFn) {\n if (!pageData) return false;\n for (let i = 0; i < pageData.sections.length; i++) {\n if (hasItemInItems(pageData.sections[i].items, matchFn)) return true;\n }\n return false;\n}\n\nfunction hasItemInItems(items, matchFn) {\n if (!items) return false;\n for (let i = 0; i < items.length; i++) {\n if (matchFn(items[i])) return true;\n if (hasItemInItems(items[i].items, matchFn)) return true;\n }\n return false;\n}\n\nexport { payload, getCodeJson, hasItemInPageData, hasItemInItems, hasItemInPageDataByItemTypeCode };\n\nexport default { payload };","import React, {useRef, useLayoutEffect} from 'react';\nimport { Item } from 'cms/items/item';\nimport cmsUtils from 'cms/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 const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const speed = cmsUtils.payload(item, 'Speed') || 'normal';\n const slides = subItems.map((subItem, index) =>\n \n );\n //console.log(\"spped\", speed);\n const bannerPanel = useRef(null);\n\n var settings = {\n dots: false,\n infinite: true,\n //speed: 1500,\n //autoplaySpeed: 3000,\n speed: 1500,\n autoplaySpeed: speed === 'fast' ? 2000 : 3000,\n fade: true,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n afterChange : ($currentPosition) => {\n //console.log(\"abc\", bannerPanel.current);\n var x = bannerPanel.current.querySelectorAll(\"div.slick-slide\"); \n //console.log(\"x\", x);\n for(var i = 0; i < x.length; i++){\n x[i].style.zIndex = 0;\n if(i === $currentPosition){\n x[i].style.zIndex = 1;\n }\n }\n }\n };\n\n const cssClass = utils.classNames('cms_item', 'bannerPanel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\n \n useLayoutEffect(() => {\n bannerPanel.current.querySelector(\"div.slick-slide\").style.zIndex = 1;\n }, [])\n\n return (\n
\n \n {slides}\n \n
\n );\n}","import React from 'react';\nimport cmsUtils from 'cms/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 const captionbutton = cmsUtils.payload(item, 'CaptionButton');\n\n // const titlePanel = captionTitle ? (\n // linkUrl ? (\n //
\n //
) : (
)\n // ) : null;\n\n // const titlePanel = captionTitle ? (\n // linkUrl ? (\n //
\n //
) : (
)\n // ) : (captionbutton ?
{captionbutton}
: null)\n\n const titlePanel = captionTitle ? (
) : (captionbutton ?
{captionbutton}
: null);\n\n return (\n linkUrl ? (\n \n
\n {titlePanel &&
{titlePanel}
}\n
\n
) : (\n
\n {titlePanel &&
{titlePanel}
}\n
)\n //
\n // {titlePanel &&
{titlePanel}
}\n //
\n );\n \n}","import React from \"react\";\nimport cmsUtils from \"cms/utils/cmsUtils\";\nimport { Item } from \"cms/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 let bgUrl = null;\n if (imageUrl) bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(\n `/dist/transparent-textures/textures/${backgroundTile}`\n );\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"contentPanel\",\n \"contentPanel--\" + bgTheme,\n item.cssClass || item.anchorName || \"\"\n );\n\n const subItemsElts = subItems.map((subItem, index) => (\n \n ));\n\n return (\n \n {/*
*/}\n
{subItemsElts}
\n \n );\n}\n","import React, { useLayoutEffect, useRef } from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { useRouter } from 'components';\nimport { handleElementLink } from 'components';\nimport env from '../../../env';\nimport { useStore } from \"store/storeProvider\";\n\nexport function Html(props) {\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const { history } = useRouter();\n const { dispatch } = useStore();\n //console.log('item', item, cmsOption);\n\n //const content = cmsUtils.payload(item, 'Content');\n const year = (new Date()).getFullYear();\n let content = cmsOption.isCmsEdit ?\n cmsUtils.payload(item, 'Content') :\n cmsUtils.payload(item, 'Content')\n .replace(/__year__/g, year)\n .replace(\"__version__\", \" PWA \" + ver + \"\");\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n //let itemElt = (
);\n\n function handleClick(e) {\n\n let target = \"\";\n let hrefType = \"\";\n\n if (e.target.closest('a')) {\n target = e.target.closest('a').getAttribute('target');\n hrefType = e.target.closest('a').getAttribute('href');\n }\n\n //const processed = handleElementLink(e.target);\n const processed = (target === \"_blank\" || hrefType.includes('tel:') ? handleElementLink(e.target, null) : handleElementLink(e.target));\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 }\n // else {\n // e.preventDefault();\n // e.stopPropagation();\n // }\n\n if(window.location.href.includes('/guide') && hrefType === '#contact'){\n e.preventDefault();\n e.stopPropagation();\n dispatch({type:'SET_STATE', payload : {enquiryType : \"orderCaravanCampingGuide\" }});\n }\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\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 // 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\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 { Item } from 'cms/items/item';\n\nexport function TestimonialPanel(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n let itemElt = (
{item.itemTypeCode}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport { Item } from 'cms/items/item';\n\nexport function TestimonialItem(props) {\n const item = props.item;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems);\n\n //const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const title = cmsUtils.payload(item, 'Title');\n //const desc = cmsUtils.payload(item, 'Desc');\n const bottomText = cmsUtils.payload(item, 'BottomText');\n //const ratingStar = cmsUtils.payload(item, 'RatingStar');\n //const alt = cmsUtils.payload(item, 'Alt');\n\n let itemElt = (
{item.itemTypeCode} {title} {bottomText}
);\n \n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n
\n {itemElt}\n {subItemsElts}\n
\n );\n}\n\n","import React from 'react';\nimport cmsUtils from 'cms/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 return (\n
\n
\n );\n}","import { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n \n atdwTile : css(mq({\n flexGrow: '1',\n flexShrink: '0',\n flexBasis: ['260px', '260px', '334px', '299px', '267px'],\n maxWidth: ['100%', '100%', '334px', '299px', '267px'],\n margin: '10px 5px',\n backgroundColor : '#ebebeb',\n '& a' : {\n textDecoration : 'none',\n color : '#252525'\n },\n 'hr' : {\n height: '2px',\n border: '0px',\n backgroundImage: 'linear-gradient(90deg,#fe3a43,transparent)'\n }\n })),\n bg : css({\n paddingTop: '60%',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n }),\n town : css({\n padding : '0rem 0.5rem',\n backgroundColor : '#fe3a43',\n fontWeight : '700',\n color:'white'\n }),\n title : css({\n lineHeight:'1',\n fontWeight:'700',\n fontSize:'0.9rem',\n marginTop: '0.1rem'\n }),\n descContainer : css({\n padding : '0.2rem 0.5rem',\n paddingBottom : '0.5em',\n '& hr' :{\n margin : '0.3rem 0rem'\n }\n }),\n desc : css({\n fontSize : '0.8rem'\n }),\n shotDesc : css({\n fontSize : '0.8rem',\n marginTop: '0.2rem',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: '3',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { SiteLink } from 'components';\nimport style from './style';\n\nexport function PageTiles(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n \n const tileType = cmsUtils.payload(item, 'TileType') || 'main'; //none_atdw\n //console.log('item', item);\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\n //console.log(pages);\n const pageTileElts = pages.map((page, index) =>\n\n tileType === 'none_atdw' ? :\n \n );\n\n const cssClass = utils.classNames('cms_item', 'pageTiles tiles', tileType, 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 return (\n
\n \n
\n
\n
\n
\n {page.pageTitle}\n
\n {/*
\n {page.tileDesc || page.description}\n
*/}\n
\n
\n
\n )\n}\n\nfunction TileNoneAtdw(props) {\n const page = props.page;\n //console.log(\"page\", page);\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n return (\n
\n \n
\n
\n {page.tileButtonText || \"SA PARK\"}\n
\n
\n
\n {page.pageTitle}\n
\n
\n
\n {page.tileDesc || page.description}\n
\n
\n
\n
\n )\n}","import React from 'react';\nimport cmsUtils from 'cms/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(controlNameOrIndex, root) {\r\n if (typeof controlNameOrIndex === 'number' && root && root.controls.length > controlNameOrIndex) return root.controls[controlNameOrIndex];\r\n return findControlTraverse(controlNameOrIndex, root);\r\n}\r\n\r\nfunction findControlTraverse(controlName, control) {\r\n if (!control) return null;\r\n if (control.name === controlName) return control;\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const found = findControlTraverse(controlName, control.controls[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function findControlById(id, root) {\r\n return findControlByIdTraverse(id, root);\r\n}\r\n\r\nfunction findControlByIdTraverse(id, control) {\r\n if (!control) return null;\r\n if (control.id === id) return control;\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const found = findControlByIdTraverse(id, control.controls[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function getValue(root) {\r\n //console.log(root)\r\n return getValueTraverse(root);\r\n}\r\n\r\nconst helperFns = {\r\n getValueTraverse: getValueTraverse,\r\n getFilesTraverse: getFilesTraverse\r\n}\r\n\r\nfunction getKeyValueTraverse(control) {\r\n let keyValue = {};\r\n keyValue[control.name] = getValueTraverse(control);\r\n return keyValue\r\n}\r\n\r\nfunction getValueTraverse(control) {\r\n //console.log(control);\r\n if (control.controlType === 'control') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n return control.value;\r\n } else if (control.controlType === 'group') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n let value = {};\r\n for (let i = 0; i < control.controls.length; i++) {\r\n value = { ...value, ...getKeyValueTraverse(control.controls[i]) };\r\n }\r\n return value;\r\n } else if (control.controlType === 'array') {\r\n if (control.customValueFn)\r\n return control.customValueFn(control, helperFns);\r\n\r\n const array = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n array.push(getValueTraverse(control.controls[i]))\r\n }\r\n return array;\r\n }\r\n return null;\r\n}\r\n\r\nexport function getFiles(root) {\r\n //console.log(root)\r\n return getFilesTraverse(root);\r\n}\r\n\r\nfunction getFilesTraverse(control) {\r\n if (control.controlType === 'control') {\r\n return control.files ? [{ name: control.name, files: control.files }] : [];\r\n } else if (control.controlType === 'group') {\r\n let files = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n files.push(...getFilesTraverse(control.controls[i]));\r\n }\r\n return files;\r\n } else if (control.controlType === 'array') {\r\n let files = [];\r\n for (let i = 0; i < control.controls.length; i++) {\r\n files.push(...getFilesTraverse(control.controls[i]));\r\n }\r\n return files;\r\n }\r\n return [];\r\n}","//import uuid from 'uuid/v4';\r\nimport shortid from 'shortid';\r\nimport * as formModelHelper from './formModelHelper';\r\n\r\n//#region helpers\r\nfunction findIndexById(id) {\r\n for (let i = 0; i < this.controls.length; i++) {\r\n if (this.controls[i].id === id) return i;\r\n }\r\n return -1;\r\n}\r\n//#endregion\r\n\r\nconst group = (controls) => {\r\n const controlArray = [];\r\n //console.log('group', controls, typeof controls);\r\n if (controls && typeof controls === 'object') {\r\n Object.keys(controls).forEach(key => {\r\n controlArray.push(abstractControl(key, controls[key]))\r\n })\r\n }\r\n\r\n const ctrl = {\r\n controlType: 'group',\r\n id: shortid(),\r\n controls: controlArray,\r\n find: (name) => controlArray.find((x) => x.name === name),\r\n customValueFn: null, // function\r\n disableValidators: false\r\n }\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl)\r\n ctrl.controls.forEach(x => x.parent = ctrl)\r\n\r\n return ctrl\r\n}\r\n\r\nconst array = (controls) => {\r\n //console.log('array', controls);\r\n const ctrl = {\r\n controlType: 'array',\r\n id: shortid(),\r\n controls: controls,\r\n findIndexById: findIndexById\r\n }\r\n ctrl.getValue = () => formModelHelper.getValue(ctrl)\r\n ctrl.controls.forEach(x => x.parent = ctrl)\r\n\r\n return ctrl\r\n}\r\n\r\nconst abstractControl = (name, controlObject) => {\r\n //console.log('abstractControl', name, controlObject);\r\n if (!controlObject) return null;\r\n // array or group\r\n if (controlObject.controlType) {\r\n controlObject.name = name;\r\n return controlObject;\r\n } else {\r\n return control(name, controlObject)\r\n }\r\n}\r\n\r\nconst control = (name, [value, validators, controlOptions]) => {\r\n //const { label, type, options, style } = controlOptions || {};\r\n //console.log(value, validators, label, type, options)\r\n return {...{\r\n controlType: 'control',\r\n id: shortid(),\r\n name: name,\r\n value: value,\r\n validators: validators || [],\r\n touched: false,\r\n incomplete: false,\r\n findValidator: (type) => (validators || []).find((x) => x.type === type),\r\n // label: label,\r\n // type: type,\r\n // options: options,\r\n // style: style\r\n }, ...controlOptions};\r\n}\r\n\r\nexport default { group, array }","import utils from '../../utils';\r\n\r\nexport function hasRequiredValidator(control) {\r\n if (!control) return false;\r\n return !!control.findValidator('required')\r\n}\r\n\r\nexport function getNameForValidator(label, name) {\r\n return utils.text.toFieldName(label || name);\r\n}\r\n\r\nexport function getValidatorOptions(params) {\r\n const defaultOpt = { continueToValidate: false }\r\n return params ? { ...defaultOpt, ...params } : defaultOpt;\r\n}\r\n\r\nexport function createValidator(type, message, opt, validate) {\r\n const validator =\r\n {\r\n type: type,\r\n disabled: false,\r\n ...getValidatorOptions(opt),\r\n message: message,\r\n validate: validate\r\n }\r\n return validator;\r\n}","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Required(message = null, opt = null) {\r\n return createValidator('required', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return isEmpty(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' is required.')) : null\r\n })\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Email(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n // only validate for blur keydown tab\r\n if (e && e.type === 'change') return null;\r\n return !isEmpty(control.value) && !isValidEmail(control.value) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid email.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidEmail = mail => {\r\n const regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(mail);\r\n}\r\n\r\nfunction isEmpty(val) {\r\n if (Array.isArray(val))\r\n return val.length === 0;\r\n return !val && val !== 0;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\nimport utils from '../../../utils';\r\n\r\nexport function ValidateDate(message = null, opt = null) {\r\n return createValidator('date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isDate(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDate(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nexport function PastDateNullAllowed(message = null, opt = null) {\r\n return createValidator('past-date', message, opt, function (control, e, validateOpt) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return control.value && !isPast(control.value) ? message || getNameForValidator(control.label, control.name) + ' is invalid.' : null;\r\n });\r\n}\r\n\r\nfunction isDate(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n return !!date;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isPast(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n //console.log(date, typeof date)\r\n if (date) {\r\n const now = new Date();\r\n return date.getTime() < now.getTime();\r\n }\r\n }\r\n return false;\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Length(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt, validator) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isValidLength(control.value, validator) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid length.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidLength = (text, validator) => {\r\n const length = (text || '').length;\r\n if (validator.min && length < validator.min) return false;\r\n if (validator.max && length > validator.max) return false;\r\n return true;\r\n}\r\n","import { Required } from './validators/required';\r\nimport { Email } from './validators/email';\r\nimport { ValidateDate, PastDate, PastDateNullAllowed } from './validators/date';\r\nimport { Length } from './validators/length';\r\n\r\nconst validateControl = (control, e, validateOpt) => {\r\n const errors = [];\r\n const validators = control.validators || [];\r\n for (let i = 0; i < validators.length; i++) {\r\n const validator = validators[i];\r\n if (!validator.disabled) {\r\n const error = validator.validate && validator.validate(control, e, validateOpt, validator);\r\n if (error) {\r\n errors.push(error);\r\n //console.log(error, control, validator, e)\r\n\r\n if (!validator.continueToValidate) break;\r\n }\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n};\r\n\r\nexport default {\r\n Required,\r\n Email,\r\n Date: ValidateDate,\r\n PastDate,\r\n PastDateNullAllowed,\r\n Length,\r\n validateControl,\r\n};\r\n","import 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 utils from '../../utils';\r\nimport React from 'react';\r\nimport { hasRequiredValidator } from './validatorHelper';\r\n\r\nexport function getLabel(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n return <>\r\n \r\n {requiredMark && {requiredMark}}\r\n ;\r\n}\r\n\r\nexport function getLabelAsString(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n \r\n return (label || utils.text.toFieldName(name)) + (requiredMark ? requiredMark : '');\r\n}","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(control, formOption)\r\n const placeHolder = usePlaceholder ? getLabelAsString(control, formOption) : null;\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n if (type === 'date' && value) {\r\n valueStr = utils.date.formatYYYYMMDD(value);\r\n }\r\n\r\n let prependText = null;\r\n if (style && style.prependText) {\r\n prependText = style.prependText\r\n }\r\n //console.log(name, !!(style && style.autoFocus))\r\n //const autoFocus = !!(style && style.autoFocus)\r\n\r\n function keyDown(e) {\r\n //console.log(e.key)\r\n if (e.key === \"Enter\" || e.key === 'Tab') {\r\n handleChange(e, control)\r\n }\r\n }\r\n function changed(e) {\r\n //console.log('changed', name, e.target.value)\r\n handleChange(e, control)\r\n }\r\n function blur(e) {\r\n //console.log('blur', name, e.target.value)\r\n handleChange(e, control)\r\n }\r\n\r\n // function focus(e) {\r\n // console.log('focus', name, e.target.value)\r\n // }\r\n\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n {prependText &&
\r\n
{prependText}
\r\n
\r\n }\r\n\r\n handleChange(e, control)} \r\n // onBlur={(e) => handleChange(e, control, true)}\r\n onChange={changed}\r\n onKeyDown={keyDown}\r\n onBlur={blur}\r\n autoComplete=\"new-password\"\r\n //onFocus={focus}\r\n //autoFocus={autoFocus}\r\n placeholder={placeHolder}\r\n className={\"form-control\" + (errors && errors.length > 0 ? ' is-invalid' : '')} {...attrs} />\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default TextInput;","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction RadioListInput({ control, handleChange, formOption }) {\r\n const { name, label, value, errors, style, options, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs} />\r\n \r\n {\r\n (option.helpText && option.helpText !== '') &&\r\n \r\n }\r\n
)}\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(value, optionValue) {\r\n if (optionValue === null || typeof optionValue === 'undefined') return false;\r\n return value === optionValue;\r\n}\r\n\r\nexport default RadioListInput;","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nconst CheckboxListInput = ({ control, handleChange, formOption }) => {\r\n const { name, label, value, errors, style, options, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n const values = value ? [...value] : [];\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n
\r\n {options && options.map((option, index) =>\r\n
\r\n handleChange(e, control)}\r\n value={option.value} id={fieldId + '_' + index} {...attrs}/>\r\n \r\n
)}\r\n\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction checked(values, value) {\r\n if (value === null || typeof value === 'undefined') return false;\r\n return values.includes(value);\r\n}\r\n\r\nexport default CheckboxListInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction DateSeparateInput({ control, handleChange, formOption }) {\r\n //const { name, label, value, errors, style } = control;\r\n const { name, label, errors, style, helpText, attrs } = control;\r\n const thisYear = (new Date()).getFullYear();\r\n //console.log(name, value)\r\n const [year, setYear] = React.useState('')\r\n const [month, setMonth] = React.useState('')\r\n const [day, setDay] = React.useState('')\r\n\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, name + '|'+ fieldLabel)\r\n //const placeHolder = usePlaceholder ? fieldLabel : null;\r\n // let valueStr = value === 0 ? 0 : (value || \"\");\r\n // if (type === 'date' && value) {\r\n // valueStr = utils.date.formatYYYYMMDD(value);\r\n // }\r\n\r\n function handleChangeDay(e) {\r\n setDay(e.target.value)\r\n handleChangeInner(year, month, e.target.value)\r\n }\r\n\r\n function handleChangeMonth(e) {\r\n setMonth(e.target.value)\r\n handleChangeInner(year, e.target.value, day)\r\n }\r\n\r\n function handleChangeYear(e) {\r\n setYear(e.target.value)\r\n handleChangeInner(e.target.value, month, day)\r\n }\r\n\r\n function handleChangeInner(yyyy, mm, dd) {\r\n control.incomplete = !(yyyy !== '' && mm !== '' && dd !== '')\r\n const newVal = yyyy + '-' + mm + '-' + dd;\r\n //console.log(newVal)\r\n //mimic event\r\n handleChange({\r\n persist: () => { },\r\n target: { name: name, value: newVal, checked: false }\r\n }, control)\r\n }\r\n\r\n //const monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\r\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n const selectStyle = { width: 'auto', display: 'inline-block', marginRight: '0.5em' };\r\n\r\n const fromYear = style && style.recentYear ? thisYear : thisYear - 10;\r\n const recentYear = style && style.recentYear ? style.recentYear : 100;\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n \r\n \r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DateSeparateInput;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel } from '../formRenderHelper';\r\n\r\nfunction FileInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const fieldId = utils.random.shortId();\r\n const { usePlaceholder = false } = formOption;\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(label, control)\r\n const placeHolder = usePlaceholder ? fieldLabel : null;\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n if (type === 'date' && value) {\r\n valueStr = utils.date.formatYYYYMMDD(value);\r\n }\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n handleChange(e, control)} onBlur={(e) => handleChange(e, control)}\r\n placeholder={placeHolder}\r\n className={\"form-control-file\" + (errors && errors.length > 0 ? ' is-invalid' : '')} {...attrs}/>\r\n
\r\n \r\n
\r\n { valueStr === '' ? 'No File Chosen' : valueStr.replace(/^.*\\\\/, \"\")}\r\n
\r\n
\r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default FileInput;","import TextInput from './TextInput';\r\nimport RadioListInput from './RadioListInput';\r\nimport TextareaInput from './TextareaInput';\r\nimport CheckboxInput from './CheckboxInput';\r\nimport CheckboxListInput from './CheckboxListInput';\r\nimport SelectInput from './SelectInput';\r\nimport HiddenInput from './HiddenInput';\r\n//import HtmlInput from './HtmlInput';\r\nimport DateSeparateInput from './DateSeparateInput';\r\nimport FileInput from './FileInput';\r\n\r\nconst Components = { TextInput, RadioListInput, TextareaInput, CheckboxInput, CheckboxListInput, SelectInput, HiddenInput, DateSeparateInput, FileInput };\r\n\r\nconst capitalize = expression => expression.charAt(0).toUpperCase() + expression.slice(1);\r\n\r\nexport function getControl(control, formOption) {\r\n let Component = null;\r\n if (control.type === 'number' || control.type === 'email' || control.type === 'date' || control.type === 'password' || control.type === 'tel')\r\n Component = TextInput;\r\n else if (control.type === \"dob\")\r\n Component = DateSeparateInput;\r\n else\r\n Component = Components[capitalize(control.type || '') + 'Input'];\r\n\r\n return Component;\r\n}\r\n\r\n","import React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextareaInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n //const { template = 'bootstrap', usePlaceholder = false } = formOption;\r\n const { usePlaceholder = false } = formOption;\r\n const placeHolder = usePlaceholder ? getLabelAsString(control, formOption) : null;\r\n const valueStr = value === 0 ? 0 : (value || \"\");\r\n\r\n\r\n const textAreaRef = React.useRef(null);\r\n const [textAreaHeight, setTextAreaHeight] = React.useState(\"auto\");\r\n const [parentHeight, setParentHeight] = React.useState(\"auto\");\r\n\r\n React.useEffect(() => {\r\n if (textAreaRef.current) {\r\n const h = textAreaRef.current.scrollHeight > 60? textAreaRef.current.scrollHeight : 60\r\n setParentHeight(`${h}px`);\r\n setTextAreaHeight(`${h}px`);\r\n }\r\n }, [valueStr]);\r\n\r\n function onChangeInternal(e) {\r\n setTextAreaHeight(\"auto\");\r\n if (textAreaRef.current) {\r\n const h = textAreaRef.current.scrollHeight > 60? textAreaRef.current.scrollHeight : 60\r\n setParentHeight(`${h}px`);\r\n }\r\n handleChange(e, control);\r\n }\r\n\r\n return (\r\n
\r\n {!usePlaceholder && fieldLabel && }\r\n
\r\n \r\n
\r\n {helpText &&
}\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, helpText, attrs } = 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\"} {...attrs}/>\r\n \r\n {helpText &&
}\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, helpText, attrs } = control;\r\n const fieldId = utils.random.shortId();\r\n const fieldLabel = getLabel(control, formOption);\r\n //console.log(value, typeof value)\r\n return (\r\n
\r\n {fieldLabel && }\r\n
\r\n \r\n
\r\n {helpText &&
}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SelectInput;\r\n\r\n","import * as React from 'react';\r\nimport utils from '../../../utils';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, value } = control;\r\n const fieldId = utils.random.shortId();\r\n let valueStr = value === 0 ? 0 : (value || \"\");\r\n\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default TextInput;","import React from 'react';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport { getControl } from './controls';\r\nimport { getSiteControl } from '../../form';\r\n\r\nexport function renderControlDirect(control, handleChange, formOption) {\r\n if (control === null) return null;\r\n let Component = getSiteControl(control, formOption) || getControl(control, formOption);\r\n if (!Component) return control.value;\r\n return ;\r\n}\r\n\r\n\r\nexport function renderControl(formRoot, nameOrIndex, handleChange, formOption) {\r\n //console.log(formRoot, name);\r\n const control = formModelHelper.findControl(nameOrIndex, formRoot);\r\n //console.log(control, formRoot, name, handleChange, formOption)\r\n if (control) {\r\n return renderControlDirect(control, handleChange, formOption);\r\n }\r\n}\r\n\r\nexport default { renderControl, renderControlDirect }","import validators from './validators';\r\n\r\nexport function validate(root, validateOpt = {}) {\r\n //console.log({...{ triggeredByChange: false }, ...validateOpt})\r\n //console.log(root, validateOpt)\r\n const errors = validateTraverse(root, {...{ triggeredByChange: false }, ...validateOpt});\r\n return errors;\r\n}\r\n\r\nfunction validateTraverse(control, validateOpt) {\r\n if (!control) return [];\r\n //console.log(!!control.disableValidators, control)\r\n if (!!control.disableValidators) { control.errors =[]; return []; }\r\n const errors = [];\r\n const errorsFromControl = validators.validateControl(control, null, validateOpt);\r\n errors.push(...errorsFromControl);\r\n //console.log(errorsFromControl, errors)\r\n if (control.controls && control.controls.length > 0) {\r\n for (let i = 0; i < control.controls.length; i++) {\r\n const errorsFromSub = validateTraverse(control.controls[i], validateOpt);\r\n errors.push(...errorsFromSub);\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n}\r\n\r\n","import { useState } from 'react';\r\nimport controlRenderer from './controlRenderer';\r\nimport * as formModelHelper from './formModelHelper';\r\nimport * as formValidate from './formValidate';\r\nimport validators from './validators';\r\n\r\nconst useForm = (initialFormModel, option) => {\r\n const [formModel, setFormModel] = useState(initialFormModel);\r\n const formOption = {\r\n ...{\r\n template: 'bootstrap',\r\n usePlaceholder: false,\r\n requiredMark: '*',\r\n onControlChanged: null\r\n }, ...option\r\n };\r\n\r\n const handleChange = (e, controlFromEvent) => {\r\n e.persist();\r\n const control = controlFromEvent || formModelHelper.findControl(e.target.name, formModel);\r\n //console.log(control)\r\n // const control = controlId? formModelHelper.findControlById(controlId, formModel)\r\n // : formModelHelper.findControl(e.target.name, formModel);\r\n if (!control) return;\r\n\r\n //console.log(control.value, e.target)\r\n control.touched = true;\r\n control.value = getControlValue(control, e.target);\r\n if (control.type === 'file') {\r\n control.files = e.target.files\r\n }\r\n\r\n // parseInput(control);\r\n if (control.onBeforeUpdateValue) {\r\n control.onBeforeUpdateValue(control, formModel)\r\n }\r\n\r\n validators.validateControl(control, e, { triggeredByChange: true });\r\n setFormModel({ ...formModel });\r\n\r\n if (formOption.onControlChanged) {\r\n formOption.onControlChanged(e, control)\r\n }\r\n };\r\n\r\n const validateForm = (e, successHandler, errorHandler) => {\r\n validateGroup(formModel, e, successHandler, errorHandler)\r\n };\r\n\r\n const validateGroup = (control, e, successHandler, errorHandler) => {\r\n e && e.preventDefault();\r\n const errors = formValidate.validate(control);\r\n\r\n if (errors.length === 0) successHandler && successHandler();\r\n else {\r\n setFormModel({ ...formModel });\r\n errorHandler && errorHandler(errors)\r\n }\r\n };\r\n\r\n const reset = (model) => setFormModel(model ? { ...model } : { ...formModel });\r\n\r\n // const parseInput = input => input.value = input.parseFun ? input.parseFun(input.value) : input.value;\r\n\r\n const renderControl = (name, formRoot) => controlRenderer.renderControl(formRoot || formModel, name, handleChange, formOption);\r\n const renderControlDirect = (control) => controlRenderer.renderControlDirect(control, handleChange, formOption);\r\n\r\n const getValue = (formRoot) => formModelHelper.getValue(formRoot || formModel);\r\n\r\n const getFiles = (formRoot) => formModelHelper.getFiles(formRoot || formModel);\r\n\r\n const findControl = (name, formRoot) => {\r\n const control = formModelHelper.findControl(name, formRoot || formModel);\r\n return control;\r\n }\r\n //return [controls, handleChange, handleSubmit, getValue]\r\n return {\r\n model: formModel,\r\n errors: formModel.errors,\r\n reset: reset,\r\n renderControl: renderControl,\r\n renderControlDirect: renderControlDirect,\r\n findControl: findControl,\r\n validateForm: validateForm,\r\n validateGroup: validateGroup,\r\n getValue: getValue,\r\n getFiles: getFiles\r\n }\r\n};\r\n\r\nfunction getControlValue(control, el) {\r\n //console.log(control, el)\r\n if (control.type === 'checkboxList') {\r\n const options = el.closest('.controlOptions');\r\n if (options) {\r\n return [...options.querySelectorAll('input:checked')].map(x => x.value)\r\n }\r\n return [];\r\n }\r\n else if (control.type === 'radioList') {\r\n const options = el.closest('.controlOptions');\r\n if (options) {\r\n const val = [...options.querySelectorAll('input:checked')].map(x => x.value)\r\n return val && val.length > 0 ? val[0] : null\r\n }\r\n return null;\r\n }\r\n return control.type === 'checkbox' ? el.checked : el.value;\r\n}\r\n\r\nexport { useForm };","// import { fb, validators, formModelHelper } from 'form';\n\n// export function getContactModel(data) {\n\n// const enquiryTypeList = [\n// { name: 'Enquiry Type*', value: \"\" },\n// { name: 'Park or Booking Enquiry', value: \"parkBookingEnquiry\" },\n// { name: 'Order Caravan & Camping Guide', value: \"orderCaravanCampingGuide\" },\n// { name: 'General Enquiry', value: \"generalEnquiry\" },\n// ];\n\n// const model = fb.group({\n\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// enquiryType : [data.enquiryType || '', [validators.Required()], { label: '', type: 'select', options : enquiryTypeList, onBeforeUpdateValue : (control, formModel) => {\n\n// const _parkName = formModelHelper.findControl(\"parkName\", formModel);\n// const _streetAddress = formModelHelper.findControl(\"streetAddress\", formModel);\n// const _postCode = formModelHelper.findControl(\"postCode\", formModel);\n// const _citySuburb = formModelHelper.findControl(\"citySuburb\", formModel);\n// const _enquiry = formModelHelper.findControl(\"enquiry\", formModel);\n\n// _parkName.validators = [];\n// _streetAddress.validators = [];\n// _postCode.validators = [];\n// _citySuburb.validators = [];\n\n// _enquiry.label = \"Your Message\";\n\n// if(control.value === 'parkBookingEnquiry'){\n// _parkName.validators.push(validators.Required());\n// }\n// else if(control.value === 'orderCaravanCampingGuide'){\n// _streetAddress.validators.push(validators.Required());\n// _postCode.validators.push(validators.Required());\n// _citySuburb.validators.push(validators.Required());\n// _enquiry.label = \"Your Message/Delivery Instructions\";\n// _enquiry.validators = [];\n// }\n\n// } }],\n// parkName: [data.preParkName || '', [], { label: 'Park Name', type: 'text' }],\n// streetAddress: [data.streetAddress || '', [], { label: 'Street Address', type: 'text' }],\n// postCode: [data.postCode || '', [], { label: 'Post Code', type: 'text' }],\n// citySuburb: [data.citySuburb || '', [], { label: 'City/Suburb', type: 'text' }],\n// });\n// return model;\n// }\n\nimport { fb, validators } from \"form\";\n\nexport function getContactModel(data) {\n const enquiryTypeList = [\n { name: \"Enquiry Type*\", value: \"\" },\n { name: \"Park or Booking Enquiry\", value: \"parkBookingEnquiry\" },\n {\n name: \"Order Caravan & Camping Guide\",\n value: \"orderCaravanCampingGuide\",\n },\n { name: \"General Enquiry\", value: \"generalEnquiry\" },\n ];\n\n const model = fb.group({\n name: [\n data.name || \"\",\n [validators.Required()],\n { label: \"Full Name\", type: \"text\" },\n ],\n //fName: [data.fName || '', [validators.Required()], { label: 'First Name', type: 'text' }],\n //lName: [data.lName || '', [validators.Required()], { label: 'Last Name', type: 'text' }],\n phone: [\n data.phone || \"\",\n [validators.Required()],\n { label: \"Phone\", type: \"text\" },\n ],\n email: [\n data.email || \"\",\n [validators.Required(), validators.Email()],\n { label: \"Email\", type: \"email\" },\n ],\n enquiry: [\n data.enquiry || \"\",\n data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\"\n ? []\n : [validators.Required()],\n {\n label:\n data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\"\n ? \"Your Message/Delivery Instructions\"\n : \"Your Message\",\n type: \"textarea\",\n },\n ],\n //enquiry: [data.enquiry || '', [validators.Required()], { label: (data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\") ? 'Your Message/Delivery Instructions' : 'Your Message' , type: 'textarea' }],\n enquiryType: [\n data.enquiryType || \"\",\n [validators.Required()],\n { label: \"\", type: \"select\", options: enquiryTypeList },\n ],\n parkName: [\n data.parkName || \"\",\n data.enquiryType && data.enquiryType === \"parkBookingEnquiry\"\n ? [validators.Required()]\n : [],\n { label: \"Park Name\", type: \"text\" },\n ],\n streetAddress: [\n data.streetAddress || \"\",\n data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\"\n ? [validators.Required()]\n : [],\n { label: \"Street Address\", type: \"text\" },\n ],\n postCode: [\n data.postCode || \"\",\n data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\"\n ? [validators.Required()]\n : [],\n { label: \"Post Code\", type: \"text\" },\n ],\n citySuburb: [\n data.citySuburb || \"\",\n data.enquiryType && data.enquiryType === \"orderCaravanCampingGuide\"\n ? [validators.Required()]\n : [],\n { label: \"City/Suburb\", type: \"text\" },\n ],\n mailchimp: [\n \"\",\n [],\n {\n label:\n \"Yes! Sign me up to your E-Newsletter to get all the Latest News, Events & Offers.\",\n type: \"checkbox\",\n },\n ],\n });\n return model;\n}\n","//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const pageView = (url, pageTitle = null) => {\r\n if (!hasGTM()) return;\r\n\r\n const pageOpt = pageTitle ? {\r\n path: url,\r\n title: pageTitle\r\n } : { path: url }\r\n //console.log(url, pageOpt)\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: pageOpt\r\n })\r\n}\r\n\r\n// \r\nexport const sendEvent = (eventName, params) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n}\r\n\r\nexport const sendGAEvent = (category, action, label, value) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: 'gaEvent' }, { category: category || '', action: action || '', label: label || '', value: value || '' }))\r\n}\r\n//#endregion\r\n\r\n\r\n","import React, { useEffect } from \"react\";\nimport env from \"env\";\nimport { usePost } from \"components\";\nimport { useForm } from \"form\";\nimport { Button, ErrorMessage } from \"components\";\nimport { getContactModel } from \"./contactFormModel\";\nimport { gtm } from \"../../../lib/tracking\";\nimport { useStore } from \"../../../store\";\n\nexport function Contact(props) {\n const emailReceiver = props.emailReceiver;\n const { state } = useStore();\n const model = getContactModel({ enquiryType: state.enquiryType });\n //const model = getContactModel({});\n const form = useForm(model, {\n usePlaceholder: true,\n onControlChanged: orderItemChanged,\n });\n //const form = useForm(model, { usePlaceholder: true});\n const [sendingStatus, setSendingStatus] = React.useState(null);\n //const [preParkNameFormAtdwPage, setPreParkNameFormAtdwPage] = React.useState();\n const [checkMsg, setCheckMsg] = React.useState(false);\n const [checkStart, setCheckStart] = React.useState(0);\n\n // setTimeout(() => {\n // setPreParkNameFormAtdwPage(state.preParkName);\n // }, 1000);\n\n const post = usePost();\n\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), emailReceiver: emailReceiver };\n post.send(env.apiBase + \"/api/contact/send\", value);\n setSendingStatus(\"pending\");\n });\n }\n\n function orderItemChanged(e, control) {\n if (control && control.name === \"enquiryType\") {\n // if(state.preParkName && state.preParkName !== \"\"){\n // form.findControl(\"parkName\").value = state.preParkName;\n // }\n form.findControl(\"parkName\").value = state.preParkName;\n const newModel = getContactModel(form.getValue());\n form.reset(newModel);\n setCheckMsg(false);\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 setCheckMsg(true);\n }\n\n const render = (name) => form.renderControl(name, null);\n const val = form.getValue();\n\n // useEffect(() => {\n // console.log(\"contact page loop test4\");\n // if(!preParkNameFormAtdwPage){\n // return;\n // }\n // form.findControl(\"parkName\").value = preParkNameFormAtdwPage;\n // // eslint-disable-next-line\n // },[preParkNameFormAtdwPage]);\n\n useEffect(() => {\n if (checkStart === 0) {\n console.log(\"state.enquiryType 1\", state.enquiryType, form.getValue());\n setCheckStart(1);\n return;\n }\n form.reset(model);\n\n // eslint-disable-next-line\n }, [state.enquiryType]);\n\n // useLayoutEffect(() => {\n\n // const _nameInput = document.querySelector(\"input[name='name'].form-control\");\n // if(_nameInput){\n // _nameInput.blur();\n // }\n\n // // eslint-disable-next-line\n // }, []);\n\n return (\n
\n
\n {/*
{render('lName')}
*/}\n
\n\n
\n
{render(\"name\")}
\n
{render(\"phone\")}
\n
{render(\"email\")}
\n
\n\n
\n
\n {render(\"enquiryType\")}\n
\n
\n\n {val.enquiryType === \"parkBookingEnquiry\" && (\n
\n
{render(\"parkName\")}
\n
\n )}\n\n {val.enquiryType === \"orderCaravanCampingGuide\" && (\n
\n
{render(\"streetAddress\")}
\n
{render(\"postCode\")}
\n
{render(\"citySuburb\")}
\n
\n )}\n\n
\n
{render(\"enquiry\")}
\n
\n {render(\"mailchimp\")} \n
\n
\n
\n By continuing, I agree to SA-Parks's{\" \"}\n Privacy Policy\n
\n
\n
\n\n
\n
\n
\n \n \n {post.status === \"done\" && checkMsg && \"Successfully sent!\"}\n
\n
\n
\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from 'cms/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 from 'react';\n// import { Item } from 'cms/items/item';\n// import { SiteLink } from 'shared/link/siteLink';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { YoutubeBanner } from 'components';\n//import env from 'env';\n//import Slider from 'modules/slider/slider';\nimport {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 = () => window.innerWidth >= 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 {false && } */}\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 { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default {\n atdwTiles : css({\n display: 'flex',\n alignItems: 'stretch',\n flexWrap: 'wrap',\n //justifyContent: 'space-between'\n justifyContent: 'start'\n })\n}","import { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n \n atdwTile : css(mq({\n flexGrow: '1',\n flexShrink: '0',\n flexBasis: ['260px', '260px', '334px', '299px', '267px'],\n maxWidth: ['100%', '100%', '334px', '299px', '267px'],\n margin: '10px 5px',\n backgroundColor : '#ebebeb',\n '& a' : {\n textDecoration : 'none',\n color : '#252525'\n },\n 'hr' : {\n height: '2px',\n border: '0px',\n backgroundImage: 'linear-gradient(90deg,#fe3a43,transparent)'\n }\n })),\n bg : css({\n paddingTop: '60%',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n position:'relative'\n }),\n petIcon : css({\n position:'absolute',\n top:'10px',\n left:'10px',\n width: '50px',\n zIndex:'1'\n }),\n petIconBg : css({\n width: '100%',\n height:'100%',\n position:'absolute',\n top:'0px',\n //backgroundColor:'rgba(0,0,0,0.3)'\n }),\n town : css({\n padding : '0rem 0.5rem',\n backgroundColor : '#fe3a43',\n fontWeight : '700',\n color:'white'\n }),\n title : css({\n lineHeight:'1',\n fontWeight:'700',\n fontSize:'0.9rem',\n marginTop: '0.1rem'\n }),\n descContainer : css({\n padding : '0.2rem 0.5rem',\n paddingBottom : '0.5em',\n '& hr' :{\n margin : '0.3rem 0rem'\n }\n }),\n desc : css({\n fontSize : '0.8rem'\n }),\n shotDesc : css({\n fontSize : '0.8rem',\n marginTop: '0.2rem',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: '3',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\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 atdwSearchOption : css({\n '& .form-group label' : {\n marginBottom : '0px'\n },\n '.form-control:focus' : {\n boxShadow : 'none'\n }\n }),\n search_btn : css(mq({\n //marginTop: ['auto', '17px']\n marginTop: ['auto']\n })),\n date_reset_btn : css({\n marginLeft: '1rem',\n fontSize: '0.8rem',\n padding: '0px 10px',\n //marginBottom: '5px',\n marginTop: '-10px',\n backgroundColor: 'gray',\n borderColor: 'gray',\n borderRadius: '10px'\n }),\n dumyLabel : css({\n color: 'transparent'\n }),\n pet : css({\n marginTop:'2.5rem',\n paddingLeft:'2rem',\n '.form-check-input' : css({\n width: '20px',\n height: '20px',\n marginTop:'0.3rem',\n marginLeft:'-2rem'\n }),\n // '.form-check-label' : css({\n // fontSize:'1.5rem',\n // fontWeight: '700'\n // })\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\n//import utils from 'utils';\nimport { useState } from 'react';\nimport Select from 'react-select';\n\nfunction dateFormat(date){\n var _date = date.getFullYear() + \"-\" +\n (('' + (date.getMonth() + 1)).length < 2 ? (\"0\" + (date.getMonth() + 1)) : (date.getMonth() + 1)) + \"-\" +\n (('' + (date.getDate())).length < 2 ? (\"0\" + (date.getDate())) : (date.getDate()));\n return _date;\n}\n\nfunction dateFormatPlus2(date){\n date.setDate(date.getDate() +2);\n var _date = date.getFullYear() + \"-\" +\n (('' + (date.getMonth() + 1)).length < 2 ? (\"0\" + (date.getMonth() + 1)) : (date.getMonth() + 1)) + \"-\" +\n (('' + (date.getDate())).length < 2 ? (\"0\" + (date.getDate())) : (date.getDate()));\n return _date;\n}\n\nexport function AtdwSearchOption(props){ \n const atdwType = props.atdwType;\n const _petFriendly = (props.petFriendly && props.petFriendly === 'on') ? true : false;\n const hidePetFriendly = (props.petFriendly && props.petFriendly === 'hide') ? true : false;\n\n console.log(\"props.petFriendly\", props.petFriendly);\n console.log(\"hidePetFriendly\", hidePetFriendly);\n\n const numOfAdultsOption = [\n { value: '1', label: '1' },\n { value: '2', label: '2' },\n { value: '3', label: '3' },\n { value: '4', label: '4' },\n { value: '5', label: '5' },\n { value: '6', label: '6' },\n { value: '7', label: '7' },\n { value: '8', label: '8' },\n { value: '9', label: '9' }\n ];\n\n const numOfKidsOption = [\n { value: '0', label: '0' },\n { value: '1', label: '1' },\n { value: '2', label: '2' },\n { value: '3', label: '3' },\n { value: '4', label: '4' },\n { value: '5', label: '5' },\n { value: '6', label: '6' },\n { value: '7', label: '7' },\n { value: '8', label: '8' },\n { value: '9', label: '9' }\n ];\n\n const [searchOptionValue, setSearchOptionValue] = useState({\n checkIn : '',\n checkOut : '',\n numOfAdults : numOfAdultsOption[1],\n numOfKids : numOfKidsOption[0],\n subType : [],\n town : '',\n name : '',\n petFriendly : _petFriendly\n });\n\n const today = new Date();\n const checkInMinDate = dateFormat(today);\n const [checkOutMinDate, setCheckOutMinDate] = useState(dateFormatPlus2(today));\n //const [triggerPetCheck, setTriggerPetCheck] = useState(0);\n const typeOptions = setTypeOptions();\n //console.log(\"1111\", typeOptions.items);\n function setTypeOptions(){\n if(atdwType === 'ACCOMM'){\n return {title : 'Accommodation Type',\n //bookingAble : false,\n bookingAble : true,\n items : [\n // { value: 'APARTMENT', label: 'Apartments' },\n // { value: 'BACKPACKER', label: 'Backpackers and Hostels' },\n // { value: 'BEDBREAKFA', label: 'Bed and Breakfasts' },\n // { value: 'CABCOTTAGE', label: 'Cabins and Cottages' },\n // { value: 'VANCAMP', label: 'Caravan and Camping' },\n // { value: 'FARMSTAY', label: 'Farm Stays' },\n // { value: 'HOLHOUSE', label: 'Holiday Houses' },\n // { value: 'HOTEL', label: 'Hotels' },\n // { value: 'MOTEL', label: 'Motels' },\n // { value: 'CABCOTTAGE', label: 'Cabins and Cottages' },\n // { value: 'RESORT', label: 'Resorts' },\n // { value: 'RETREAT', label: 'Retreats' }\n ]};\n }\n else if(atdwType === 'ATTRACTION'){\n return {title : 'Attraction Type', bookingAble : false,\n items : [\n { value: 'SHOPPING', label: 'Shopping and Markets' },\n { value: 'SPARETREAT', label: 'Spas and Retreats' },\n ]\n }\n }\n else if(atdwType === 'RESTAURANT'){\n return {title : 'Food & Drink Type', bookingAble : false,\n items : [\n { value: 'BAR', label: 'Bar' },\n { value: 'TAKEAWAY', label: 'Takeaway Available' },\n ]\n }\n }\n else if(atdwType === 'EVENT'){\n return {title : 'Event Type', bookingAble : false,\n items : [\n { value: 'EVTBUS', label: 'Business Event' },\n { value: 'EVTFOOD', label: 'Food and Wine' },\n ]\n }\n }\n else if(atdwType === 'HIRE'){\n return {title : 'Hire Type', bookingAble : false,\n items : [\n { value: 'BICYCLE', label: 'Bicycles' },\n { value: 'BOAT', label: 'Boats' },\n ]\n }\n }\n else if(atdwType === 'GENSERVICE'){\n return {title : 'Service Type', bookingAble : false,\n items : [\n { value: 'CARPARK', label: 'Carpark' },\n { value: 'FAMLYFREND', label: 'Family Friendly' },\n ]\n }\n }\n else if(atdwType === 'TOUR'){\n return {title : 'Tour Type', bookingAble : false,\n items : [\n { value: 'AOTOURS', label: 'Adventure and Outdoors Tours' },\n { value: 'AHBTOURS', label: 'Air, Helicopter and Balloon Tours' },\n ]\n }\n }\n else\n {\n return {title : '', bookingAble : false, items : []}\n }\n }\n\n function onSubmit(event){\n event.preventDefault();\n const value = searchOptionValue;\n props.onGetSearchOption(value);\n }\n \n // const onSubmit = useCallback((event) => {\n // console.log(\"absdfdfds\");\n // event.preventDefault();\n // setCount(count + 1);\n // }, [count2]);\n\n function handChange(el){\n const elName = el.target.name;\n const elValue = el.target.value;\n if(elName === \"checkIn\"){ \n const date = new Date(elValue);\n setCheckOutMinDate(dateFormatPlus2(date));\n setSearchOptionValue({...searchOptionValue, [elName] : elValue, \"checkOut\" : dateFormat(date)});\n }\n else if(elName === \"petFriendly\"){\n setSearchOptionValue({...searchOptionValue, petFriendly : el.target.checked});\n //setTriggerPetCheck(triggerPetCheck + 1);\n }\n else{\n setSearchOptionValue({...searchOptionValue, [elName] : elValue});\n }\n }\n\n // useEffect(() => {\n\n // if(triggerPetCheck === 0){\n // return;\n // }\n\n // const value = searchOptionValue;\n // props.onGetSearchOption(value);\n\n // // eslint-disable-next-line\n // }, [triggerPetCheck]);\n\n return(\n
\n
\n {\n typeOptions.items.length > 0 ? (\n
\n
\n \n \n
\n
\n ) : null\n }\n\n
\n {\n typeOptions.bookingAble ? (\n
\n \n \n \n
\n ) : null\n }\n
\n \n \n
\n
\n\n
\n {\n typeOptions.bookingAble ? (\n
\n \n \n
\n ) : null\n } \n
\n \n \n
\n
\n\n
\n \n {/* {\n typeOptions.bookingAble ? (\n
\n
\n \n \n
\n
\n \n \n
\n
\n ) : null\n } */}\n\n
\n \n \n
\n\n {\n hidePetFriendly === false && \n
\n
\n \n \n
\n
\n }\n\n
\n\n
\n
\n );\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\n//import style from './style';\nimport utils from \"utils\";\nimport { AtdwSearchOption } from \"../searchOption/view\";\nimport { AtdwSearchResult } from \"../searchResult/view\";\nimport cmsUtils from \"cms/utils/cmsUtils\";\nimport { useState, useEffect, useCallback, useContext } from \"react\";\nimport env from \"env\";\nimport { AtdwContext } from \"../index\";\n\nfunction AtdwSearchTitle(props) {\n const type = props.type;\n //console.log(\"type\",type);\n const title = { sTitle: \"\", title: \"\" };\n if (type === \"ACCOMM\") {\n title.sTitle = \"SEARCH & BOOK\";\n title.title = \"ACCOMMODATION\";\n } else if (type === \"ATTRACTION\") {\n title.sTitle = \"SEARCH\";\n title.title = \"ATTRACTIONS\";\n } else if (type === \"DESTINFO\") {\n title.sTitle = \"SEARCH\";\n title.title = \"TOWN\";\n } else if (type === \"RESTAURANT\") {\n title.sTitle = \"SEARCH\";\n title.title = \"RESTAURANT\";\n } else if (type === \"EVENT\") {\n title.sTitle = \"SEARCH\";\n title.title = \"EVENT\";\n } else if (type === \"INFO\") {\n title.sTitle = \"SEARCH\";\n title.title = \"INFO\";\n } else if (type === \"TOUR\") {\n title.sTitle = \"SEARCH\";\n title.title = \"TOUR\";\n } else if (type === \"GENSERVICE\") {\n title.sTitle = \"SEARCH\";\n title.title = \"GENSERVICE\";\n } else if (type === \"JOURNEY\") {\n title.sTitle = \"SEARCH\";\n title.title = \"JOURNEY\";\n }\n\n return (\n

\n {title.sTitle} {title.title}\n

\n );\n}\n\nexport function AtdwSearch(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames(\n \"cms_item\",\n \"atdwSearch\",\n item.cssClass || item.anchorName || \"\"\n );\n const bgColor = cmsUtils.payload(item, \"BgColor\");\n const imageUrl = cmsUtils.payload(item, \"ImageUrl\");\n const backgroundTile = cmsUtils.payload(item, \"BackgroundTile\");\n const petFriendly = cmsUtils.payload(item, \"PetFriendly\") || \"off\";\n const tilesSize = 12;\n const atdwArea = cmsUtils.payload(item, \"ProductArea\") || \"all\";\n const customCategories = cmsUtils.payload(item, \"CustomCategories\") || \"\";\n\n //const atdwArea = \"all\";\n\n let bgUrl = null;\n if (imageUrl) bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(\n `/dist/transparent-textures/textures/${backgroundTile}`\n );\n\n const [atdwState, setAtdwState] = useState({\n atdwType: \"ACCOMM\",\n atdwArea: atdwArea,\n index: 1,\n atdwDataFromDB: [],\n reserveAtdwData: [],\n shuffledAtdwData: [],\n atdwData: [],\n trigger: 0,\n context: useContext(AtdwContext),\n });\n\n //const [atdwSearchText, setAtdwSearchText] = useState(\"Searching for ATDW\");\n const [atdwSearchText, setAtdwSearchText] = useState(\" \");\n\n //TXA\n const [trigger, setTrigger] = useState(0);\n const [checkIn, setCheckIn] = useState(\"\");\n const [checkOut, setCheckOut] = useState(\"\");\n const [numOfAdults, setNumOfAdults] = useState(\"\");\n const [numOfKids, setNumOfKids] = useState(\"\");\n\n //checkIn, checkOut, numOfAdults, numOfKids,\n function searechAtdwFilter({\n petFriendly,\n town,\n name,\n subType,\n atdwDataItem,\n customCategories,\n }) {\n //const _checkIn = checkIn || '';\n //const _checkOut = checkOut || '';\n //const _numOfAdults = numOfAdults || '2';\n //const _numOfKids = numOfKids || '0';\n const _petFriendly = petFriendly || false;\n const _customCategories = customCategories || \"\";\n\n const _town = town || \"\";\n const _name = name || \"\";\n const _subType = subType || [];\n\n const _filteredData = atdwDataItem.filter((data) => {\n let returnResult = false;\n //1\n if (_subType.length > 0) {\n //checkFilterDo = true\n for (var i in data.additionalData.PRODUCTTYPES) {\n returnResult = false;\n if (\n subType\n .toString()\n .includes(data.additionalData.PRODUCTTYPES[i].productTypeId)\n ) {\n returnResult = true;\n } else {\n returnResult = false;\n break;\n }\n }\n } else {\n returnResult = true;\n }\n\n //2\n if (returnResult === true && _town !== \"\" && _town !== null) {\n //checkFilterDo = true\n returnResult = false;\n if (data.town.toLowerCase().includes(_town.toLowerCase())) {\n returnResult = true;\n }\n }\n\n //3\n if (returnResult === true && _name !== \"\" && _name !== null) {\n //checkFilterDo = true\n returnResult = false;\n if (data.productName.toLowerCase().includes(_name.toLowerCase())) {\n returnResult = true;\n }\n }\n\n //4 pet\n if (returnResult === true && _petFriendly === true) {\n //checkFilterDo = true\n returnResult = false;\n const _checkPetFriendly = data.checkPetFriendly || false;\n if (_checkPetFriendly === true) {\n returnResult = true;\n }\n }\n\n //5 customCategories\n if (\n returnResult === true &&\n _customCategories !== null &&\n _customCategories !== \"\"\n ) {\n returnResult = false;\n if (data.customCategories && data.customCategories !== \"\") {\n const _customCategoryArray = _customCategories.split(\",\");\n for (let i in _customCategoryArray) {\n returnResult = false;\n if (\n data.customCategories\n .toLowerCase()\n .includes(_customCategoryArray[i].toLowerCase())\n ) {\n returnResult = true;\n break;\n }\n }\n }\n }\n return returnResult;\n });\n return _filteredData;\n }\n\n function onGetSearchOptionFun(value) {\n const _checkIn = value.checkIn ? value.checkIn : \"\";\n const _checkOut = value.checkOut ? value.checkOut : \"\";\n const _numOfAdults = value.numOfAdults.value\n ? value.numOfAdults.value\n : \"2\";\n const _numOfKids = value.numOfKids.value ? value.numOfKids.value : \"0\";\n const _petFriendly = value.petFriendly ? value.petFriendly : false;\n\n const subType = [];\n for (var i in value.subType) {\n subType.push(value.subType[i].value);\n }\n const town = value.town.trim();\n const name = value.name.trim();\n\n //let checkFilterDo = false\n\n const _filteredData = searechAtdwFilter({\n petFriendly: _petFriendly,\n town: town,\n name: name,\n subType: subType,\n atdwDataItem: atdwState.shuffledAtdwData,\n customCategories: customCategories,\n //checkFilterDo : checkFilterDo\n });\n\n const _data = [];\n\n if (_filteredData.length > 0) {\n for (let x = 0; x < tilesSize; x++) {\n _data.push(_filteredData[x]);\n if (x === _filteredData.length - 1) {\n break;\n }\n }\n }\n\n setAtdwState((pre) => {\n let _new = { ...pre };\n _new.context.setupAtdwTxaCheckInDate(null);\n _new.reserveAtdwData = _filteredData;\n\n if (_checkIn !== \"\") {\n _new.atdwData = [];\n setCheckIn(_checkIn);\n setCheckOut(_checkOut);\n setNumOfAdults(_numOfAdults);\n setNumOfKids(_numOfKids);\n setTrigger(trigger + 1);\n //setAtdwSearchText(\"Searching for ATDW\");\n setAtdwSearchText(\" \");\n _new.context.setupAtdwTxaCheckInDate(_checkIn);\n } else {\n _new.atdwData = _data;\n _new.index = 1;\n _new.context.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index,\n });\n if (_data.length === 0) {\n setAtdwSearchText(\n \"Currently no match, please check in the Regions below to find more Park options for your preferred dates.\"\n );\n } else {\n setAtdwSearchText(\"\");\n }\n }\n return _new;\n });\n }\n\n // const onGetSearchOptionFun = ((value) => {\n\n // const _checkIn = value.checkIn ? value.checkIn : '';\n // const _checkOut = value.checkOut ? value.checkOut : '';\n // const _numOfAdults = value.numOfAdults.value ? value.numOfAdults.value : '2';\n // const _numOfKids = value.numOfKids.value ? value.numOfKids.value : '0';\n // const _petFriendly = value.petFriendly ? value.petFriendly : false;\n\n // const subType = [];\n // for(var i in value.subType){\n // subType.push(value.subType[i].value);\n // }\n // const town = value.town.trim();\n // const name = value.name.trim();\n\n // let checkFilterDo = false\n // const _filteredData = atdwState.atdwDataFromDB.filter((data) => {\n\n // //console.log(\"data\", data);\n\n // let returnResult = false;\n\n // //1\n // if(subType.length > 0){\n // checkFilterDo = true\n // for(var i in data.additionalData.PRODUCTTYPES){\n // returnResult = false;\n // if(subType.toString().includes(data.additionalData.PRODUCTTYPES[i].productTypeId)){\n // returnResult = true;\n // }\n // else{\n // returnResult = false;\n // break;\n // }\n // }\n // }\n // else{\n // returnResult = true;\n // }\n\n // //2\n // if(returnResult === true && (town !== \"\" && town !== null)){\n // checkFilterDo = true\n // returnResult = false;\n // if(data.town.toLowerCase().includes(town.toLowerCase())){\n // returnResult = true;\n // }\n // }\n\n // //3\n // if(returnResult === true && (name !== \"\" && name !== null)){\n // checkFilterDo = true\n // returnResult = false;\n // if(data.productName.toLowerCase().includes(name.toLowerCase())){\n // returnResult = true;\n // }\n // }\n\n // //4 pet\n // if(returnResult === true && (_petFriendly === true)){\n // checkFilterDo = true\n // returnResult = false;\n // const _checkPetFriendly = data.checkPetFriendly || false;\n // if(_checkPetFriendly === true){\n // returnResult = true;\n // }\n // }\n\n // return returnResult;\n // });\n\n // const _data = [];\n\n // if(checkFilterDo){\n // if(_filteredData.length > 0){\n // for(let x = 0; x < tilesSize; x++){\n // _data.push(_filteredData[x]);\n // if(x === (_filteredData.length -1)){\n // break;\n // }\n // }\n // }\n // }\n // else{\n // if(atdwState.shuffledAtdwData.length > 0){\n // for(let x = 0; x < tilesSize; x++){\n // _data.push(atdwState.shuffledAtdwData[x]);\n // if(x === (atdwState.shuffledAtdwData.length -1)){\n // break;\n // }\n // }\n // }\n // }\n\n // setAtdwState(pre => {\n // let _new = {...pre};\n // _new.context.setupAtdwTxaCheckInDate(null);\n\n // if(checkFilterDo){\n // _new.reserveAtdwData = _filteredData;\n // }\n // else{\n // _new.reserveAtdwData = atdwState.shuffledAtdwData;\n // }\n\n // if(_checkIn !== ''){\n // _new.atdwData = [];\n // setCheckIn(_checkIn);\n // setCheckOut(_checkOut);\n // setNumOfAdults(_numOfAdults);\n // setNumOfKids(_numOfKids);\n // setTrigger(trigger + 1);\n // //setAtdwSearchText(\"Searching for ATDW\");\n // setAtdwSearchText(\" \");\n // _new.context.setupAtdwTxaCheckInDate(_checkIn);\n // }\n // else{\n // _new.atdwData = _data;\n // _new.index = 1;\n // _new.context.setupAtdwDataHistory({\n // atdwDataFromDB : _new.atdwDataFromDB,\n // reserveAtdwData : _new.reserveAtdwData,\n // atdwData : _new.atdwData,\n // index : _new.index\n // });\n // if(_data.length === 0){\n // setAtdwSearchText(\"Sorry, there are no available results.\");\n // }\n // else{\n // setAtdwSearchText(\"\");\n // }\n // }\n // return _new;\n // });\n // });\n\n useEffect(() => {\n //console.log(\"useEffect_1\");\n if (atdwState.context.atdwDataHistory2 !== null) {\n setAtdwState((pre) => {\n let _new = { ...pre };\n _new.atdwDataFromDB = atdwState.context.atdwDataHistory.atdwDataFromDB;\n _new.reserveAtdwData =\n atdwState.context.atdwDataHistory.reserveAtdwData;\n _new.atdwData = atdwState.context.atdwDataHistory.atdwData;\n _new.index = atdwState.context.atdwDataHistory.index;\n return _new;\n });\n setTimeout(() => {\n document\n .getElementById(atdwState.context.atdwDataHistory2)\n .scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n atdwState.context.setupAtdwDataHistory2(null);\n atdwState.context.setupAtdwTxaCheckInDate(null);\n }, 500);\n\n return;\n }\n\n const fetchData = async () => {\n const res = await fetch(\n env.apiBase + \"/api/atdw/getproducts/\" + atdwState.atdwArea\n );\n const data = await res.json();\n\n const _data = [];\n\n data.products.forEach((el) => {\n const _attributes = el.additionalData.attributes || [];\n let checkPetFriendly = false;\n for (let _a in _attributes) {\n if (_attributes[_a].attributeId === \"PETALLOW\") {\n checkPetFriendly = true;\n break;\n }\n }\n el.checkPetFriendly = checkPetFriendly;\n });\n\n var shuffled = JSON.parse(JSON.stringify(data.products));\n var currentIndex = shuffled.length,\n temporaryValue,\n randomIndex;\n\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = shuffled[currentIndex];\n shuffled[currentIndex] = shuffled[randomIndex];\n shuffled[randomIndex] = temporaryValue;\n }\n\n //backup\n // for(var i = 0; i < tilesSize; i++){\n // _data.push(data.products[i]);\n // if(i === (data.products.length -1)){\n // break;\n // }\n // }\n let _filteredData = shuffled;\n\n // if(petFriendly && petFriendly === 'on'){\n // _filteredData = searechAtdwFilter({petFriendly : true, atdwDataItem : _filteredData});\n // }\n\n _filteredData = searechAtdwFilter({\n petFriendly: petFriendly && petFriendly === \"on\" ? true : false,\n customCategories:\n customCategories && customCategories !== \"\" ? customCategories : \"\",\n atdwDataItem: _filteredData,\n });\n\n //shuffled\n if (_filteredData.length > 0) {\n for (var i = 0; i < tilesSize; i++) {\n _data.push(_filteredData[i]);\n if (i === _filteredData.length - 1) {\n break;\n }\n }\n }\n\n setAtdwState((pre) => {\n let _new = { ...pre };\n _new.atdwDataFromDB = data.products;\n _new.reserveAtdwData = _filteredData;\n _new.shuffledAtdwData = shuffled;\n _new.atdwData = _data;\n _new.context.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index,\n });\n return _new;\n });\n\n if (_data.length > 0) {\n setAtdwSearchText(\"\");\n } else {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n }\n };\n fetchData();\n\n // eslint-disable-next-line\n }, [atdwState.atdwType, atdwState.context, atdwState.atdwArea]);\n\n useEffect(() => {\n if (trigger === 0) {\n return;\n }\n\n const r_data = [];\n const _data = [];\n const fetchData = async () => {\n const sendData = {\n checkIn: checkIn,\n checkOut: checkOut,\n adults: numOfAdults,\n kids: numOfKids,\n txaList: [],\n };\n atdwState.reserveAtdwData.forEach((el) => {\n // if(el.additionalData.externalSystems.length > 0){\n // for(var i in el.additionalData.externalSystems){\n // if(el.additionalData.externalSystems[i].externalSystemCode === \"TXA_DEFAULT\"){\n // sendData.txaList.push(el.additionalData.externalSystems[i].externalSystemText);\n // break;\n // }\n // else if(el.additionalData.externalSystems[i].externalSystemCode === \"TXA_MULTI\" && env.MultiTxaCode.includes(el.additionalData.externalSystems[i].externalSystemText)){\n // sendData.txaList.push(el.additionalData.externalSystems[i].externalSystemText);\n // break;\n // }\n // else if(el.additionalData.externalSystems[i].externalSystemCode === \"TXA_CODE\" && env.MultiTxaCode.includes(el.additionalData.externalSystems[i].externalSystemText)){\n // sendData.txaList.push(el.additionalData.externalSystems[i].externalSystemText);\n // break;\n // }\n // }\n // }\n if (el.txaCode && el.txaCode !== \"\") {\n sendData.txaList.push(el.txaCode);\n }\n });\n\n //BelairNatParkCP\n // if(!sendData.txaList.toString().includes(\"BelairNatParkCP\")){\n // sendData.txaList.push(\"BelairNatParkCP\");\n // }\n\n //console.log('aaa', sendData);\n\n const res = await fetch(env.apiBase + \"/api/atdw/gettxaproducts\", {\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(sendData),\n });\n const data = await res.json();\n console.log(\"dddd ---- \", data);\n\n let _count = 0;\n for (var i = 0; i < atdwState.reserveAtdwData.length; i++) {\n // for(var n = 0; n < atdwState.reserveAtdwData[i].additionalData.externalSystems.length; n++){\n // if(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemCode === \"TXA_DEFAULT\"){\n // //console.log(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText);\n // if(data.toString().includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n // r_data.push(atdwState.reserveAtdwData[i]);\n // if(_count < tilesSize){\n // _data.push(atdwState.reserveAtdwData[i]);\n // }\n // _count++;\n // break;\n // }\n // }\n // else if(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemCode === \"TXA_MULTI\" &&\n // env.MultiTxaCode.includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n\n // if(data.toString().includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n // r_data.push(atdwState.reserveAtdwData[i]);\n // if(_count < tilesSize){\n // _data.push(atdwState.reserveAtdwData[i]);\n // }\n // _count++;\n // break;\n // }\n // }\n // else if(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemCode === \"TXA_CODE\" &&\n // env.MultiTxaCode.includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n\n // if(data.toString().includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n // r_data.push(atdwState.reserveAtdwData[i]);\n // if(_count < tilesSize){\n // _data.push(atdwState.reserveAtdwData[i]);\n // }\n // _count++;\n // break;\n // }\n // }\n // }\n ////BelairNatParkCP\n // if(data.toString().includes(\"BelairNatParkCP\") && atdwState.reserveAtdwData[i].productId === '56b2711faeeeaaf773d03794'){\n // r_data.push(atdwState.reserveAtdwData[i]);\n // if(_count < tilesSize){\n // _data.push(atdwState.reserveAtdwData[i]);\n // }\n // _count++;\n // }\n\n if (\n atdwState.reserveAtdwData[i].txaCode !== null &&\n atdwState.reserveAtdwData[i].txaCode !== \"\"\n ) {\n if (data.toString().includes(atdwState.reserveAtdwData[i].txaCode)) {\n r_data.push(atdwState.reserveAtdwData[i]);\n if (_count < tilesSize) {\n _data.push(atdwState.reserveAtdwData[i]);\n }\n _count++;\n }\n }\n }\n\n setAtdwState((pre) => {\n let _new = { ...pre };\n _new.reserveAtdwData = r_data;\n _new.atdwData = _data;\n _new.index = 1;\n return _new;\n });\n\n if (_data.length === 0) {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n } else {\n setAtdwSearchText(\"\");\n }\n };\n\n fetchData();\n setTrigger(0);\n }, [\n trigger,\n checkIn,\n checkOut,\n numOfAdults,\n numOfKids,\n atdwState.reserveAtdwData,\n ]);\n\n const addAtdw = useCallback(\n (reserveAtdwData, _atdwContext) => {\n //console.log(\"addAtdw\", reserveAtdwData);\n const av = [];\n for (\n var i = atdwState.index * tilesSize;\n i < atdwState.index * tilesSize + tilesSize;\n i++\n ) {\n av.push(reserveAtdwData[i]);\n if (reserveAtdwData.length - 1 === i) {\n break;\n }\n }\n\n setAtdwState((pre) => {\n let _new = { ...pre };\n _new.atdwData = [..._new.atdwData, ...av];\n _new.index = _new.index + 1;\n _atdwContext.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index,\n });\n return _new;\n });\n },\n [atdwState.index]\n );\n\n return (\n \n
\n \n \n\n {atdwSearchText === \"\" && (\n
\n

\n You’re in luck! The following Parks have availability for your\n dates.\n

\n 1 to {atdwState.atdwData.length} of{\" \"}\n {atdwState.reserveAtdwData.length}\n
\n )}\n\n {atdwState.atdwData ? (\n \n ) : null}\n\n {atdwState.reserveAtdwData.length >= 12 && atdwSearchText === \"\" ? (\n
\n 1 to {atdwState.atdwData.length} of{\" \"}\n {atdwState.reserveAtdwData.length}\n
\n ) : null}\n\n {atdwState.atdwData.length !== atdwState.reserveAtdwData.length &&\n atdwState.atdwData.length > 0 ? (\n
\n {\n addAtdw(atdwState.reserveAtdwData, atdwState.context);\n }}\n >\n MORE\n \n
\n ) : null}\n\n {atdwSearchText !== \"\" && (\n
\n {atdwSearchText}\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\nexport default {\n atdwSearchOption : mq({\n marginBottom : ['1rem',null,'0px'],\n '& .form-group label' : {\n marginBottom : '0px'\n },\n '.form-control:focus' : {\n boxShadow : 'none'\n }\n }),\n search_btn : css(mq({\n //marginTop: ['auto', '17px']\n marginTop: ['auto']\n })),\n date_reset_btn : css({\n marginLeft: '1rem',\n fontSize: '0.8rem',\n padding: '0px 10px',\n //marginBottom: '5px',\n marginTop: '-10px',\n backgroundColor: 'gray',\n borderColor: 'gray',\n borderRadius: '10px'\n }),\n dumyLabel : css({\n color: 'transparent'\n }),\n pet : css({\n marginTop:'2.5rem',\n paddingLeft:'2rem',\n '.form-check-input' : css({\n width: '20px',\n height: '20px',\n marginTop:'0.3rem',\n marginLeft:'-2rem'\n }),\n // '.form-check-label' : css({\n // fontSize:'1.5rem',\n // fontWeight: '700'\n // })\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\n//import utils from 'utils';\nimport { useState } from 'react';\nimport Select from 'react-select';\n\n// function dateFormat(date) {\n// var _date = date.getFullYear() + \"-\" +\n// (('' + (date.getMonth() + 1)).length < 2 ? (\"0\" + (date.getMonth() + 1)) : (date.getMonth() + 1)) + \"-\" +\n// (('' + (date.getDate())).length < 2 ? (\"0\" + (date.getDate())) : (date.getDate()));\n// return _date;\n// }\n\n// function dateFormatPlus2(date) {\n// date.setDate(date.getDate() + 2);\n// var _date = date.getFullYear() + \"-\" +\n// (('' + (date.getMonth() + 1)).length < 2 ? (\"0\" + (date.getMonth() + 1)) : (date.getMonth() + 1)) + \"-\" +\n// (('' + (date.getDate())).length < 2 ? (\"0\" + (date.getDate())) : (date.getDate()));\n// return _date;\n// }\n\nexport function AtdwSearchOptionV2(props) {\n const atdwType = props.atdwType;\n //const _petFriendly = (props.petFriendly && props.petFriendly === 'on') ? true : false;\n\n const numOfAdultsOption = [\n { value: '1', label: '1' },\n { value: '2', label: '2' },\n { value: '3', label: '3' },\n { value: '4', label: '4' },\n { value: '5', label: '5' },\n { value: '6', label: '6' },\n { value: '7', label: '7' },\n { value: '8', label: '8' },\n { value: '9', label: '9' }\n ];\n\n const numOfKidsOption = [\n { value: '0', label: '0' },\n { value: '1', label: '1' },\n { value: '2', label: '2' },\n { value: '3', label: '3' },\n { value: '4', label: '4' },\n { value: '5', label: '5' },\n { value: '6', label: '6' },\n { value: '7', label: '7' },\n { value: '8', label: '8' },\n { value: '9', label: '9' }\n ];\n\n const [searchOptionValue, setSearchOptionValue] = useState({\n checkIn: '',\n checkOut: '',\n numOfAdults: numOfAdultsOption[1],\n numOfKids: numOfKidsOption[0],\n subType: [],\n town: '',\n name: '',\n //petFriendly: _petFriendly\n });\n\n //const today = new Date();\n //const checkInMinDate = dateFormat(today);\n //const [checkOutMinDate, setCheckOutMinDate] = useState(dateFormatPlus2(today));\n //const [triggerPetCheck, setTriggerPetCheck] = useState(0);\n const typeOptions = setTypeOptions();\n //console.log(\"1111\", typeOptions.items);\n function setTypeOptions() {\n if (atdwType === 'ACCOMM') {\n return {\n title: 'Accommodation Type',\n //bookingAble : false,\n bookingAble: true,\n items: [\n // { value: 'APARTMENT', label: 'Apartments' },\n // { value: 'BACKPACKER', label: 'Backpackers and Hostels' },\n // { value: 'BEDBREAKFA', label: 'Bed and Breakfasts' },\n // { value: 'CABCOTTAGE', label: 'Cabins and Cottages' },\n // { value: 'VANCAMP', label: 'Caravan and Camping' },\n // { value: 'FARMSTAY', label: 'Farm Stays' },\n // { value: 'HOLHOUSE', label: 'Holiday Houses' },\n // { value: 'HOTEL', label: 'Hotels' },\n // { value: 'MOTEL', label: 'Motels' },\n // { value: 'CABCOTTAGE', label: 'Cabins and Cottages' },\n // { value: 'RESORT', label: 'Resorts' },\n // { value: 'RETREAT', label: 'Retreats' }\n ]\n };\n }\n else if (atdwType === 'ATTRACTION') {\n return {\n title: 'Attraction Type', bookingAble: false,\n items: [\n { value: 'SHOPPING', label: 'Shopping and Markets' },\n { value: 'SPARETREAT', label: 'Spas and Retreats' },\n ]\n }\n }\n else if (atdwType === 'RESTAURANT') {\n return {\n title: 'Food & Drink Type', bookingAble: false,\n items: [\n { value: 'BAR', label: 'Bar' },\n { value: 'TAKEAWAY', label: 'Takeaway Available' },\n ]\n }\n }\n else if (atdwType === 'EVENT') {\n return {\n title: 'Event Type', bookingAble: false,\n items: [\n { value: 'EVTBUS', label: 'Business Event' },\n { value: 'EVTFOOD', label: 'Food and Wine' },\n ]\n }\n }\n else if (atdwType === 'HIRE') {\n return {\n title: 'Hire Type', bookingAble: false,\n items: [\n { value: 'BICYCLE', label: 'Bicycles' },\n { value: 'BOAT', label: 'Boats' },\n ]\n }\n }\n else if (atdwType === 'GENSERVICE') {\n return {\n title: 'Service Type', bookingAble: false,\n items: [\n { value: 'CARPARK', label: 'Carpark' },\n { value: 'FAMLYFREND', label: 'Family Friendly' },\n ]\n }\n }\n else if (atdwType === 'TOUR') {\n return {\n title: 'Tour Type', bookingAble: false,\n items: [\n { value: 'AOTOURS', label: 'Adventure and Outdoors Tours' },\n { value: 'AHBTOURS', label: 'Air, Helicopter and Balloon Tours' },\n ]\n }\n }\n else {\n return { title: '', bookingAble: false, items: [] }\n }\n }\n\n function onSubmit(event) {\n event.preventDefault();\n const value = searchOptionValue;\n props.onGetSearchOption(value);\n }\n\n function handChange(el) {\n const elName = el.target.name;\n const elValue = el.target.value;\n if (elName === \"checkIn\") {\n //const date = new Date(elValue);\n //setCheckOutMinDate(dateFormatPlus2(date));\n //setSearchOptionValue({ ...searchOptionValue, [elName]: elValue, \"checkOut\": dateFormat(date) });\n }\n // else if(elName === \"petFriendly\"){\n // setSearchOptionValue({...searchOptionValue, petFriendly : el.target.checked});\n // //setTriggerPetCheck(triggerPetCheck + 1);\n // }\n else {\n setSearchOptionValue({ ...searchOptionValue, [elName]: elValue });\n }\n }\n\n return (\n
\n
\n {\n typeOptions.items.length > 0 ? (\n
\n
\n \n \n
\n
\n ) : null\n }\n\n
\n\n
\n \n \n
\n\n
\n\n
\n
\n \n \n
\n
\n\n
\n\n
\n \n \n
\n
\n\n
\n
\n );\n}","import { mq } from 'cssInJs';\n\nexport default {\n portal__background: {\n backgroundColor: 'rgba(0,0,0,0.3)',\n position: 'fixed',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n zIndex: '9998'\n },\n portal__popupcontainer: mq({\n position: 'fixed',\n top: '2%',\n left: '50%',\n width: '100%',\n zIndex: '9999',\n margin: '0px',\n transform: 'translateX(-50%)',\n maxWidth: ['95%', null, '800px', null, '1200px'],\n }),\n select__attribute__outer: {\n backgroundColor: 'white',\n maxWidth: '1200px',\n margin: 'auto',\n padding: '1rem',\n borderRadius: '10px',\n },\n select__attribute: {\n\n //textAlign:'center',\n //maxWidth: ['320px', null, '820px'],\n\n maxHeight: '700px',\n overflow: 'auto'\n },\n no__filter__selected__text: {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n left: '50%',\n fontSize: '1.2rem',\n fontWeight: 700\n },\n category__button__container: mq({\n //display: 'flex',\n marginTop: '1rem',\n display: ['none', null, 'block'],\n position: 'relative'\n //flexDirection: 'column'\n }),\n category__select__container: mq({\n //display: 'flex',\n marginTop: '1rem',\n display: ['block', null, 'none'],\n 'select': {\n fontWeight: 700,\n fontSize: '1.1rem',\n //background: 'red !important',\n // 'option:checked' : {\n // backgroundColor : '#fe3a43',\n // color: 'white'\n // },\n // 'option:hover' : {\n // //box-shadow: 0 0 10px 100px #1882A8 inset\n // boxShadow: '0 0 10px 100px #1882A8 inset !important',\n // background : 'red !important',\n // outline: 'none !important'\n // }\n }\n // 'select : hover' : {\n // background: 'red !important',\n // outline: 'none !important'\n // },\n // '::selection' : {\n // color :'red',\n // backgroundColor : 'red !important'\n // }\n }),\n\n category__button__item__wrapper: {\n flex: '1 0 100%',\n maxWidth: '100%',\n '&.additional__filter__text': {\n color: '#fe3a43',\n marginTop: '3rem',\n marginBottom: '1rem',\n fontSize: '0.8rem',\n fontWeight: '700'\n },\n '&.additional__filter__item': {\n marginTop: '1rem',\n //marginBottom : '1rem',\n },\n },\n\n show__result: {\n textAlign: 'right',\n '&.show__result__top': {\n position: 'absolute',\n right: '0px'\n },\n 'div': {\n paddingLeft: '1rem',\n paddingRight: '1rem',\n textAlign: 'center',\n cursor: 'pointer',\n fontWeight: 600,\n lineHeight: 2,\n borderRadius: '10px',\n backgroundColor: \"#fe3a43\",\n color: 'white',\n display: 'inline-block',\n }\n },\n\n category__button__item: {\n // flex: '1 0 20%',\n // maxWidth : '20%',\n paddingLeft: '1.5rem',\n paddingRight: '1.5rem',\n textAlign: 'center',\n cursor: 'pointer',\n fontWeight: 600,\n lineHeight: 2,\n borderRadius: '10px',\n backgroundColor: \"#333333\",\n color: 'white',\n display: 'inline-block',\n maxWidth: '200px',\n width: '100%',\n '&.seleted': {\n backgroundColor: \"#fe3a43\",\n color: 'white',\n //pointerEvents: 'none'\n }\n },\n category__button__item__inner: {\n '&.seleted': {\n backgroundColor: 'red'\n }\n },\n hr__style: {\n borderTop: '2px solid rgba(0,0,0,0.1)',\n marginTop: '0.7rem',\n marginBottom: '0.7rem'\n },\n\n check__box__group: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '1.5rem',\n maxHeight: '500px',\n overflow: 'auto'\n },\n\n pet__container: mq({\n flex: ['1 0 100%', null, '1 0 33.3%'],\n maxWidth: ['100%', null, '33.3%'],\n paddingTop: ['0.3rem', null, '0px'],\n paddingBottom: ['0.3rem', null, '0px'],\n paddingLeft: ['3px', null, '0px'],\n paddingRight: ['3px', null, '0px']\n }),\n\n pet: {\n //marginTop:'2.5rem',\n paddingLeft: '2rem',\n 'input': {\n accentColor: \"#fe3a43\"\n },\n '.form-check-input': mq({\n width: '20px',\n height: '20px',\n marginTop: ['3px', null, '0.3rem'],\n marginLeft: '-2rem'\n }),\n // '.form-check-label' : css({\n // fontSize:'1.5rem',\n // fontWeight: '700'\n // })\n },\n\n search__text: {\n fontWeight: 700,\n color: \"#fe3a43\",\n fontSize: '1.2rem',\n marginTop: '0.2rem',\n position: 'relative',\n },\n\n close__btn: {\n textAlign: 'right',\n cursor: 'pointer',\n 'svg': {\n width: '35px',\n height: '35px'\n }\n },\n s__filter__container: {\n marginTop: '0.5rem',\n marginBottom: '0px',\n backgroundColor: '#ebebeb',\n padding: '0.5rem 1rem',\n borderRadius: '5px'\n },\n applied__filters: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '1rem 0.5rem',\n backgroundColor: '#ebebeb',\n marginBottom: '1rem',\n borderRadius: '10px'\n },\n applied__filter__item: {\n marginLeft: '0.5rem',\n marginRight: '0.5rem',\n marginTop: '0.3rem',\n marginBottom: '0.3rem',\n backgroundColor: '#fe3a43',\n color: 'white',\n padding: '0.1rem 0.5rem',\n paddingTop: '0px',\n borderRadius: '5px',\n 'svg': {\n marginLeft: '0.5rem',\n marginBottom: '2px',\n cursor: 'pointer'\n }\n },\n no__filter__text: {\n marginBottom: '1rem'\n }\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\n//import style from './style';\nimport utils from 'utils';\nimport { AtdwSearchOptionV2 } from '../searchOptionV2/view';\nimport { AtdwSearchResult } from '../searchResult/view';\nimport style from './style';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport { useState, useEffect, useCallback, useContext, Fragment } from 'react';\nimport env from 'env';\nimport { AtdwContext } from '../index';\nimport { createPortal } from \"react-dom\";\nimport { MdClose } from \"react-icons/md\";\n\nfunction Portal({ children }) {\n const [el] = useState(document.createElement('div'));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\n// function AtdwSearchTitle(props) {\n// const type = props.type;\n// //console.log(\"type\",type);\n// const title = { sTitle: '', title: '' };\n// if (type === 'ACCOMM') {\n// title.sTitle = \"SEARCH & BOOK\";\n// title.title = \"ACCOMMODATION\";\n// }\n// else if (type === 'ATTRACTION') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"ATTRACTIONS\";\n// }\n// else if (type === 'DESTINFO') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"TOWN\";\n// }\n// else if (type === 'RESTAURANT') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"RESTAURANT\";\n// }\n// else if (type === 'EVENT') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"EVENT\";\n// }\n// else if (type === 'INFO') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"INFO\";\n// }\n// else if (type === 'TOUR') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"TOUR\";\n// }\n// else if (type === 'GENSERVICE') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"GENSERVICE\";\n// }\n// else if (type === 'JOURNEY') {\n// title.sTitle = \"SEARCH\";\n// title.title = \"JOURNEY\";\n// }\n\n// return (\n//

{title.sTitle} {title.title}

\n// )\n// }\n\nexport function AtdwSearchV2(props) {\n\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'atdwSearchV2', item.cssClass || item.anchorName || '');\n const bgColor = cmsUtils.payload(item, 'BgColor');\n const imageUrl = cmsUtils.payload(item, 'ImageUrl');\n const backgroundTile = cmsUtils.payload(item, 'BackgroundTile');\n\n const petFriendly = cmsUtils.payload(item, 'PetFriendly') || 'off';\n const tilesSize = 12;\n\n const atdwArea = cmsUtils.payload(item, 'ProductArea') || \"all\";\n const customCategories = cmsUtils.payload(item, 'CustomCategories') || \"\";\n const filter = cmsUtils.payload(item, 'Filter') || \"all\";\n //const filter = cmsUtils.payload(item, 'Filter') || \"category_1\";\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 [atdwState, setAtdwState] = useState({\n atdwType: 'ACCOMM',\n atdwArea: atdwArea,\n index: 1,\n atdwDataFromDB: [],\n reserveAtdwData: [],\n shuffledAtdwData: [],\n filteredAtdwData: [],\n atdwData: [],\n trigger: 0,\n context: useContext(AtdwContext),\n //atdwFilters: null\n });\n\n //const [atdwSearchText, setAtdwSearchText] = useState(\"Searching for ATDW\");\n const [atdwSearchText, setAtdwSearchText] = useState(\" \");\n const [openPopup, setOpenPopup] = useState(false);\n const [filterData, setFilterData] = useState();\n\n //TXA\n const [trigger, setTrigger] = useState(0);\n const [checkIn, setCheckIn] = useState('');\n const [checkOut, setCheckOut] = useState('');\n const [numOfAdults, setNumOfAdults] = useState('');\n const [numOfKids, setNumOfKids] = useState('');\n\n //checkIn, checkOut, numOfAdults, numOfKids,\n function searechAtdwFilter({ petFriendly, town, name, subType, atdwDataItem, customCategories }) {\n\n //const _petFriendly = petFriendly || false;\n //const _customCategories = customCategories || '';\n\n const _town = town || '';\n const _name = name || '';\n const _subType = subType || [];\n\n const _filteredData = atdwDataItem.filter((data) => {\n let returnResult = false;\n //1\n if (_subType.length > 0) {\n //checkFilterDo = true\n for (var i in data.additionalData.PRODUCTTYPES) {\n returnResult = false;\n if (subType.toString().includes(data.additionalData.PRODUCTTYPES[i].productTypeId)) {\n returnResult = true;\n }\n else {\n returnResult = false;\n break;\n }\n }\n }\n else {\n returnResult = true;\n }\n\n //2\n if (returnResult === true && (_town !== \"\" && _town !== null)) {\n //checkFilterDo = true\n returnResult = false;\n if (data.town.toLowerCase().includes(_town.toLowerCase())) {\n returnResult = true;\n }\n }\n\n //3\n if (returnResult === true && (_name !== \"\" && _name !== null)) {\n //checkFilterDo = true\n returnResult = false;\n if (data.productName.toLowerCase().includes(_name.toLowerCase())) {\n returnResult = true;\n }\n }\n\n //4 pet\n // if (returnResult === true && (_petFriendly === true)) {\n // //checkFilterDo = true\n // returnResult = false;\n // const _checkPetFriendly = data.checkPetFriendly || false;\n // if (_checkPetFriendly === true) {\n // returnResult = true;\n // }\n // }\n\n //5 customCategories\n // if (returnResult === true && _customCategories !== null && _customCategories !== \"\") {\n // returnResult = false;\n // if (data.customCategories && data.customCategories !== '') {\n // const _customCategoryArray = _customCategories.split(\",\");\n // for (let i in _customCategoryArray) {\n // returnResult = false;\n // if (data.customCategories.toLowerCase().includes(_customCategoryArray[i].toLowerCase())) {\n // returnResult = true;\n // break;\n // }\n // }\n // }\n // }\n return returnResult;\n });\n\n return _filteredData;\n }\n\n function categoryFilter({ atdwDataItem }) {\n const _filteredData = atdwDataItem.filter((data) => {\n let returnResult = false;\n let bypass = false;\n if (filterData.filteredData.length > 0) {\n if (data.productFilters && data.productFilters.length > 0) {\n for (let i in filterData.filteredData) {\n if (filterData.filteredData[i].categoryCode !== 'category_area') {\n returnResult = false;\n const _filterCheckItem = data.productFilters.find(el => el.filterId === filterData.filteredData[i].filterId);\n if (!_filterCheckItem || _filterCheckItem === null) {\n returnResult = false;\n break;\n }\n else {\n returnResult = true;\n }\n }\n else {\n // if(bypass === false && filterData.filteredData[i].filterName === data.area){\n // returnResult = true;\n // bypass = true;\n // }\n if (filterData.filteredData[i].filterName === data.area) {\n returnResult = true;\n bypass = true;\n }\n else {\n if (bypass === false) {\n returnResult = false;\n }\n }\n }\n\n // returnResult = false;\n // const _filterCheckItem = data.productFilters.find(el => el.filterId === filterData.filteredData[i].filterId);\n // console.log(\"_filterCheckItem\", _filterCheckItem);\n\n // if (!_filterCheckItem || _filterCheckItem === null) {\n // returnResult = false;\n // break;\n // }\n // else {\n // returnResult = true;\n // }\n }\n\n }\n }\n else {\n returnResult = true;\n }\n\n if (filterData.petFriendly === true && returnResult === true) {\n if (data.checkPetFriendly !== true) {\n returnResult = false;\n }\n }\n return returnResult;\n });\n\n return _filteredData;\n }\n\n function onGetSearchOptionFun(value) {\n\n const _checkIn = value.checkIn ? value.checkIn : '';\n const _checkOut = value.checkOut ? value.checkOut : '';\n const _numOfAdults = value.numOfAdults.value ? value.numOfAdults.value : '2';\n const _numOfKids = value.numOfKids.value ? value.numOfKids.value : '0';\n //const _petFriendly = value.petFriendly ? value.petFriendly : false;\n\n const subType = [];\n for (var i in value.subType) {\n subType.push(value.subType[i].value);\n }\n const town = value.town.trim();\n const name = value.name.trim();\n\n //let checkFilterDo = false\n\n const _filteredData = searechAtdwFilter({\n //petFriendly: _petFriendly,\n town: town,\n name: name,\n subType: subType,\n atdwDataItem: atdwState.shuffledAtdwData,\n //customCategories: customCategories\n //checkFilterDo : checkFilterDo\n });\n\n // const _data = [];\n\n // if (_filteredData.length > 0) {\n // for (let x = 0; x < tilesSize; x++) {\n // _data.push(_filteredData[x]);\n // if (x === (_filteredData.length - 1)) {\n // break;\n // }\n // }\n // }\n\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.context.setupAtdwTxaCheckInDate(null);\n _new.reserveAtdwData = _filteredData;\n\n if (_checkIn !== '') {\n _new.atdwData = [];\n setCheckIn(_checkIn);\n setCheckOut(_checkOut);\n setNumOfAdults(_numOfAdults);\n setNumOfKids(_numOfKids);\n setTrigger(trigger + 1);\n //setAtdwSearchText(\"Searching for ATDW\");\n setAtdwSearchText(\" \");\n _new.context.setupAtdwTxaCheckInDate(_checkIn);\n }\n else {\n\n const filteredDataResult = categoryFilter({ atdwDataItem: _new.reserveAtdwData });\n const _data = [];\n if (filteredDataResult.length > 0) {\n for (let x = 0; x < tilesSize; x++) {\n _data.push(filteredDataResult[x]);\n if (x === (filteredDataResult.length - 1)) {\n break;\n }\n }\n }\n _new.atdwData = _data;\n _new.filteredAtdwData = filteredDataResult;\n _new.index = 1;\n _new.context.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index\n });\n if (_data.length === 0) {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n }\n else {\n setAtdwSearchText(\"\");\n }\n }\n return _new;\n });\n }\n\n function openPopupFun() {\n setOpenPopup(true);\n document.body.style.overflow = \"hidden\";\n }\n\n function closePopupFun() {\n setOpenPopup(false);\n document.body.style.overflow = \"unset\";\n }\n\n function changeCurrentFilter(_filter, _filterData) {\n filterData.currentFilter = _filter;\n filterData.currentFilterData = JSON.parse(JSON.stringify(_filterData));\n setFilterData({ ...filterData });\n }\n\n function changeFilter(_filter) {\n // filterData.currentFilter = _filter;\n // filterData.currentFilterData = JSON.parse(JSON.stringify(_filterData));\n\n switch (_filter) {\n case 'select__filter':\n filterData.selectedFilter.categoryOpenCheck = !filterData.selectedFilter.categoryOpenCheck;\n break;\n case 'category_1':\n filterData.filters.category_1.categoryOpenCheck = !filterData.filters.category_1.categoryOpenCheck;\n break;\n case 'category_2':\n filterData.filters.category_2.categoryOpenCheck = !filterData.filters.category_2.categoryOpenCheck;\n break;\n case 'category_3':\n filterData.filters.category_3.categoryOpenCheck = !filterData.filters.category_3.categoryOpenCheck;\n break;\n case 'category_4':\n filterData.filters.category_4.categoryOpenCheck = !filterData.filters.category_4.categoryOpenCheck;\n break;\n case 'category_5':\n filterData.filters.category_5.categoryOpenCheck = !filterData.filters.category_5.categoryOpenCheck;\n break;\n case 'category_6':\n filterData.filters.category_6.categoryOpenCheck = !filterData.filters.category_6.categoryOpenCheck;\n break;\n case 'category_area':\n filterData.filters.category_area.categoryOpenCheck = !filterData.filters.category_area.categoryOpenCheck;\n break;\n default:\n break;\n }\n\n setFilterData({ ...filterData });\n }\n\n function handChange(el) {\n const elName = el.target.name;\n const elValue = el.target.value;\n if (elName === 'filter__select') {\n switch (elValue) {\n case 'category_1':\n changeCurrentFilter('category_1', filterData.filters.category_1);\n break;\n case 'category_2':\n changeCurrentFilter('category_2', filterData.filters.category_2);\n break;\n case 'category_3':\n changeCurrentFilter('category_3', filterData.filters.category_3);\n break;\n case 'category_4':\n changeCurrentFilter('category_4', filterData.filters.category_4);\n break;\n case 'category_5':\n changeCurrentFilter('category_5', filterData.filters.category_5);\n break;\n default:\n break;\n }\n }\n }\n\n function handChangeForFilter(el) {\n\n const value = el.value;\n const categoryCode = el.categoryCode;\n const filterId = el.filterId;\n\n switch (categoryCode) {\n case 'category_1':\n let _filter1 = filterData.filters.category_1.filters.find(el => el.filterId === filterId);\n _filter1.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_1;\n\n let _count1 = 0;\n filterData.filters.category_1.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count1++;\n }\n });\n filterData.filters.category_1.categoryCheckedNum = _count1;\n break;\n case 'category_2':\n let _filter2 = filterData.filters.category_2.filters.find(el => el.filterId === filterId);\n _filter2.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_2;\n\n let _count2 = 0;\n filterData.filters.category_2.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count2++;\n }\n });\n filterData.filters.category_2.categoryCheckedNum = _count2;\n\n break;\n case 'category_3':\n let _filter3 = filterData.filters.category_3.filters.find(el => el.filterId === filterId);\n _filter3.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_3;\n\n let _count3 = 0;\n filterData.filters.category_3.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count3++;\n }\n });\n filterData.filters.category_3.categoryCheckedNum = _count3;\n\n break;\n case 'category_4':\n let _filter4 = filterData.filters.category_4.filters.find(el => el.filterId === filterId);\n _filter4.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_4;\n\n let _count4 = 0;\n filterData.filters.category_4.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count4++;\n }\n });\n filterData.filters.category_4.categoryCheckedNum = _count4;\n\n break;\n case 'category_5':\n let _filter5 = filterData.filters.category_5.filters.find(el => el.filterId === filterId);\n _filter5.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_5;\n\n let _count5 = 0;\n filterData.filters.category_5.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count5++;\n }\n });\n filterData.filters.category_5.categoryCheckedNum = _count5;\n\n break;\n case 'category_6':\n let _filter6 = filterData.filters.category_6.filters.find(el => el.filterId === filterId);\n _filter6.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_6;\n\n let _count6 = 0;\n filterData.filters.category_6.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _count6++;\n }\n });\n filterData.filters.category_6.categoryCheckedNum = _count6;\n break;\n\n case 'category_area':\n let _filterArea = filterData.filters.category_area.filters.find(el => el.filterId === filterId);\n _filterArea.checkAtdwProductFilter = value;\n filterData.currentFilterData = filterData.filters.category_area;\n\n let _countArea = 0;\n filterData.filters.category_area.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _countArea++;\n }\n });\n filterData.filters.category_area.categoryCheckedNum = _countArea;\n break;\n case 'pet_friendly':\n filterData.petFriendly = value;\n break;\n default:\n break;\n }\n\n const _filteredData = [];\n let _filteredIdsString = \"\";\n\n filterData.filters.category_1.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_2.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_3.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_4.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_5.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_6.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filters.category_area.filters.forEach(el => {\n if (el.checkAtdwProductFilter === true) {\n _filteredData.push(el);\n _filteredIdsString = _filteredIdsString + el.filterId + \",\";\n }\n });\n\n filterData.filteredData = _filteredData;\n filterData.filteredIdsString = _filteredIdsString;\n\n setFilterData({ ...filterData });\n const filteredDataResult = categoryFilter({ atdwDataItem: atdwState.reserveAtdwData });\n\n const _data = [];\n if (filteredDataResult.length > 0) {\n for (let x = 0; x < tilesSize; x++) {\n _data.push(filteredDataResult[x]);\n if (x === (filteredDataResult.length - 1)) {\n break;\n }\n }\n }\n\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.context.setupAtdwTxaCheckInDate(null);\n _new.filteredAtdwData = filteredDataResult;\n _new.atdwData = _data;\n _new.index = 1;\n _new.context.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index\n });\n if (_data.length === 0) {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n }\n else {\n setAtdwSearchText(\"\");\n }\n return _new;\n });\n }\n\n useEffect(() => {\n //console.log(\"useEffect_1\");\n if (atdwState.context.atdwDataHistory2 !== null) {\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.atdwDataFromDB = atdwState.context.atdwDataHistory.atdwDataFromDB;\n _new.reserveAtdwData = atdwState.context.atdwDataHistory.reserveAtdwData;\n _new.atdwData = atdwState.context.atdwDataHistory.atdwData;\n _new.index = atdwState.context.atdwDataHistory.index;\n return _new;\n });\n setTimeout(() => {\n document.getElementById(atdwState.context.atdwDataHistory2).scrollIntoView({ behavior: 'smooth', block: 'center' });\n atdwState.context.setupAtdwDataHistory2(null);\n atdwState.context.setupAtdwTxaCheckInDate(null);\n }, 500);\n\n return;\n }\n\n const fetchData = async () => {\n const res = await fetch(env.apiBase + \"/api/atdw/getproductsv2post\", {\n method: 'post',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n area: atdwState.atdwArea,\n customFilter: filter\n })\n });\n\n const data = await res.json();\n const _data = [];\n\n data.products.forEach(el => {\n const _attributes = el.additionalData.attributes || [];\n let checkPetFriendly = false;\n for (let _a in _attributes) {\n if (_attributes[_a].attributeId === 'PETALLOW') {\n checkPetFriendly = true;\n break;\n }\n }\n el.checkPetFriendly = checkPetFriendly;\n });\n\n var shuffled = JSON.parse(JSON.stringify(data.products));\n var currentIndex = shuffled.length, temporaryValue, randomIndex;\n\n while (0 !== currentIndex) {\n\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = shuffled[currentIndex];\n shuffled[currentIndex] = shuffled[randomIndex];\n shuffled[randomIndex] = temporaryValue;\n }\n\n let _filteredData = shuffled;\n\n _filteredData = searechAtdwFilter({\n petFriendly: (petFriendly && petFriendly === 'on') ? true : false,\n customCategories: (customCategories && customCategories !== '') ? customCategories : '',\n atdwDataItem: _filteredData\n });\n\n //shuffled\n if (_filteredData.length > 0) {\n for (var i = 0; i < tilesSize; i++) {\n _data.push(_filteredData[i]);\n if (i === (_filteredData.length - 1)) {\n break;\n }\n }\n }\n\n let _selectedFilter = null;\n let _currentFilter = \"category_1\";\n let _currentFilterData = data.atdwFilters.category_1;\n\n switch (filter) {\n case \"category_1\":\n //filters: data.atdwFilters.category_1.\n data.atdwFilters.category_1.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_1;\n _currentFilter = \"category_2\";\n _currentFilterData = data.atdwFilters.category_2;\n break;\n case \"category_2\":\n data.atdwFilters.category_2.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_2;\n _currentFilter = \"category_3\";\n _currentFilterData = data.atdwFilters.category_3;\n break;\n case \"category_3\":\n data.atdwFilters.category_3.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_3;\n _currentFilter = \"category_4\";\n _currentFilterData = data.atdwFilters.category_4;\n break;\n case \"category_4\":\n data.atdwFilters.category_4.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_4;\n _currentFilter = \"category_5\";\n _currentFilterData = data.atdwFilters.category_5;\n break;\n case \"category_5\":\n data.atdwFilters.category_5.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_5;\n _currentFilter = \"category_6\";\n _currentFilterData = data.atdwFilters.category_6;\n break;\n case \"category_6\":\n data.atdwFilters.category_6.categoryOpenCheck = true;\n _selectedFilter = data.atdwFilters.category_6;\n //_currentFilter = \"category_6\";\n break;\n default:\n break; //CategoryCheck\n }\n \n setFilterData({\n currentFilter: _currentFilter,\n currentFilterData: _currentFilterData,\n filters: data.atdwFilters,\n petFriendly: false,\n filteredIdsString: '',\n filteredData: [],\n selectedFilter: _selectedFilter\n });\n\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.atdwDataFromDB = data.products;\n _new.reserveAtdwData = _filteredData;\n _new.shuffledAtdwData = shuffled;\n _new.filteredAtdwData = _new.reserveAtdwData;\n _new.atdwData = _data;\n\n _new.context.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index\n });\n\n return _new;\n });\n\n if (_data.length > 0) {\n setAtdwSearchText(\"\");\n }\n else {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n }\n }\n fetchData();\n\n // eslint-disable-next-line\n }, [atdwState.atdwType, atdwState.context, atdwState.atdwArea]);\n\n useEffect(() => {\n if (trigger === 0) {\n return\n }\n const r_data = [];\n const _data = [];\n const fetchData = async () => {\n const sendData = {\n checkIn: checkIn,\n checkOut: checkOut,\n adults: numOfAdults,\n kids: numOfKids,\n txaList: []\n };\n\n atdwState.reserveAtdwData.forEach(el => {\n\n if (el.txaCode && el.txaCode !== '') {\n sendData.txaList.push(el.txaCode);\n }\n });\n\n const res = await fetch(env.apiBase + \"/api/atdw/gettxaproducts\", {\n method: 'post',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(sendData)\n });\n\n const data = await res.json();\n\n //let _count = 0;\n for (var i = 0; i < atdwState.reserveAtdwData.length; i++) {\n if (atdwState.reserveAtdwData[i].txaCode !== null && atdwState.reserveAtdwData[i].txaCode !== '') {\n if (data.toString().includes(atdwState.reserveAtdwData[i].txaCode)) {\n r_data.push(atdwState.reserveAtdwData[i]);\n // if (_count < tilesSize) {\n // _data.push(atdwState.reserveAtdwData[i]);\n // }\n // _count++;\n }\n }\n }\n\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.reserveAtdwData = r_data;\n const filteredDataResult = categoryFilter({ atdwDataItem: _new.reserveAtdwData });\n\n if (filteredDataResult.length > 0) {\n for (let x = 0; x < tilesSize; x++) {\n _data.push(filteredDataResult[x]);\n if (x === (filteredDataResult.length - 1)) {\n break;\n }\n }\n }\n\n _new.atdwData = _data;\n _new.index = 1;\n _new.filteredAtdwData = filteredDataResult;\n\n return _new;\n });\n\n if (_data.length === 0) {\n setAtdwSearchText(\"Sorry, there are no available results.\");\n }\n else {\n setAtdwSearchText(\"\");\n }\n };\n\n fetchData();\n setTrigger(0);\n\n // eslint-disable-next-line\n }, [trigger, checkIn, checkOut, numOfAdults, numOfKids, atdwState.reserveAtdwData]);\n\n const addAtdw = useCallback((reserveAtdwData, _atdwContext) => {\n //console.log(\"addAtdw\", reserveAtdwData);\n const av = [];\n for (var i = (atdwState.index * tilesSize); i < ((atdwState.index * tilesSize) + tilesSize); i++) {\n av.push(reserveAtdwData[i]);\n if (reserveAtdwData.length - 1 === i) {\n break;\n }\n }\n\n setAtdwState(pre => {\n let _new = { ...pre };\n _new.atdwData = [..._new.atdwData, ...av];\n _new.index = _new.index + 1;\n _atdwContext.setupAtdwDataHistory({\n atdwDataFromDB: _new.atdwDataFromDB,\n reserveAtdwData: _new.reserveAtdwData,\n atdwData: _new.atdwData,\n index: _new.index\n });\n return _new;\n });\n }, [atdwState.index]);\n\n return (\n \n {\n openPopup &&\n \n
\n
\n
\n
\n\n
\n \n
\n\n
\n {'Search filters - showing ' + atdwState.filteredAtdwData.length + ' of ' + atdwState.atdwDataFromDB.length + ((filterData.selectedFilter && filterData.selectedFilter !== null) ? \" - \" + filterData.selectedFilter.categoryName : '')}\n
\n\n {\n filterData &&\n \n
\n {\n filterData.filters.category_1.categoryOpenCheck === false &&\n filterData.filters.category_2.categoryOpenCheck === false &&\n filterData.filters.category_3.categoryOpenCheck === false &&\n filterData.filters.category_4.categoryOpenCheck === false &&\n filterData.filters.category_5.categoryOpenCheck === false &&\n filterData.filters.category_6.categoryOpenCheck === false &&\n
\n (No filters selected)\n
\n }\n\n
\n
\n {'Show ' + atdwState.filteredAtdwData.length + ' results'}\n
\n
\n\n {\n filterData.selectedFilter && filterData.selectedFilter !== null &&\n
\n
{\n changeFilter('select__filter');\n }}>\n {filterData.selectedFilter.categoryName + (filterData.selectedFilter.categoryCheckedNum > 0 ? ` (${filterData.selectedFilter.categoryCheckedNum})` : '')}\n {/* {filterData.filters.category_1.categoryName + (filterData.filters.category_1.CategoryCheckedNum > 0 ? `(${filterData.filters.category_1.CategoryCheckedNum})` : '')} */}\n
\n\n {\n filterData.selectedFilter.categoryOpenCheck === true &&\n \n
\n {\n filterData.selectedFilter.filters.length > 0 ?\n
\n {\n filterData.selectedFilter.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n filterData.selectedFilter && filterData.selectedFilter !== null &&\n
\n Additional Filters\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_1')) &&\n
\n
{\n changeFilter('category_1');\n }}>\n {filterData.filters.category_1.categoryName + (filterData.filters.category_1.categoryCheckedNum > 0 ? ` (${filterData.filters.category_1.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_1.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_1.filters.length > 0 ?\n
\n {\n filterData.filters.category_1.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_2')) &&\n
\n
{\n changeFilter('category_2');\n }}>\n {filterData.filters.category_2.categoryName + (filterData.filters.category_2.categoryCheckedNum > 0 ? ` (${filterData.filters.category_2.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_2.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_2.filters.length > 0 ?\n
\n {\n filterData.filters.category_2.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_3')) &&\n
\n
{\n changeFilter('category_3');\n }}>\n {filterData.filters.category_3.categoryName + (filterData.filters.category_3.categoryCheckedNum > 0 ? ` (${filterData.filters.category_3.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_3.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_3.filters.length > 0 ?\n
\n {\n filterData.filters.category_3.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_4')) &&\n
\n
{\n changeFilter('category_4');\n }}>\n {filterData.filters.category_4.categoryName + (filterData.filters.category_4.categoryCheckedNum > 0 ? ` (${filterData.filters.category_4.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_4.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_4.filters.length > 0 ?\n
\n {\n filterData.filters.category_4.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_5')) &&\n
\n
{\n changeFilter('category_5');\n }}>\n {filterData.filters.category_5.categoryName + (filterData.filters.category_5.categoryCheckedNum > 0 ? ` (${filterData.filters.category_5.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_5.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_5.filters.length > 0 ?\n
\n {\n filterData.filters.category_5.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n (!filterData.selectedFilter || (filterData.selectedFilter && filterData.selectedFilter.categoryCode !== 'category_6')) &&\n
\n
{\n changeFilter('category_6');\n }}>\n {filterData.filters.category_6.categoryName + (filterData.filters.category_6.categoryCheckedNum > 0 ? ` (${filterData.filters.category_6.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_6.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_6.filters.length > 0 ?\n
\n {\n filterData.filters.category_6.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n atdwState.atdwArea === 'all' &&\n
\n
{\n changeFilter('category_area');\n }}>\n {filterData.filters.category_area.categoryName + (filterData.filters.category_area.categoryCheckedNum > 0 ? ` (${filterData.filters.category_area.categoryCheckedNum})` : '')}\n
\n {\n filterData.filters.category_area.categoryOpenCheck === true &&\n \n
\n {\n filterData.filters.category_area.filters.length > 0 ?\n
\n {\n filterData.filters.category_area.filters.map((item, index) =>\n )\n }\n\n
:
No Filters
\n }\n
\n }\n
\n }\n\n
\n\n
\n\n {\n filterData.selectedFilter && filterData.selectedFilter !== null &&\n \n
{\n changeFilter('select__filter');\n }}>\n {filterData.selectedFilter.categoryName + (filterData.selectedFilter.categoryCheckedNum > 0 ? `(${filterData.selectedFilter.categoryCheckedNum})` : '')}\n
\n {\n filterData.selectedFilter.categoryOpenCheck === true &&\n \n
\n {\n filterData.selectedFilter.filters.length > 0 ?\n
\n {\n filterData.selectedFilter.filters.map((item, index) =>\n )\n }\n
:
No Filters
\n }\n
\n }\n
\n }\n\n {\n filterData.selectedFilter && filterData.selectedFilter !== null &&\n
\n Additional Filters\n
\n }\n\n \n\n {\n filterData.currentFilterData.filters.length > 0 ?\n
\n {\n filterData.currentFilterData.filters.map((item, index) => )\n }\n
:
No Filters
\n }\n\n
\n\n
\n
\n {'Show ' + atdwState.filteredAtdwData.length + ' results'}\n
\n
\n\n
\n }\n
\n
\n
\n
\n }\n
\n
\n\n {/* */}\n \n {\n filterData && (filterData.filteredData.length > 0 || filterData.petFriendly === true) &&\n \n }\n\n {\n atdwSearchText === \"\" &&\n
\n 1 to {atdwState.atdwData.length} of {atdwState.filteredAtdwData.length}\n
\n }\n\n {atdwState.atdwData ? (\n \n ) : null}\n\n {atdwState.filteredAtdwData.length >= 12 && atdwSearchText === \"\" ? (\n
\n 1 to {atdwState.atdwData.length} of {atdwState.filteredAtdwData.length}\n
\n ) : null}\n\n {\n atdwState.atdwData.length !== atdwState.filteredAtdwData.length && atdwState.atdwData.length > 0 ? (\n
\n \n
\n ) : null}\n\n {\n atdwSearchText !== \"\" &&\n
\n {atdwSearchText}\n
\n }\n\n
\n
\n
\n );\n}\n\nfunction FilterItem({ filter, categoryCode, handChangeForFilter }) {\n return (\n
\n
\n {\n handChangeForFilter({\n filterId: filter.filterId,\n value: e.target.checked,\n categoryCode: categoryCode\n });\n }} />\n \n
\n
\n )\n}\n\nfunction AppliedSearchFilters({ filteredData, petFriendly, handChangeForFilter }) {\n return (\n
\n {/* {\n petFriendly === true &&\n
\n Pet Friendly\n {\n handChangeForFilter({\n value: false,\n categoryCode: \"pet_friendly\"\n });\n }} />\n
\n } */}\n {\n filteredData.map((item, index) =>\n
\n {item.filterName}\n {\n handChangeForFilter({\n filterId: item.filterId,\n value: false,\n categoryCode: item.categoryCode\n });\n }} />\n
\n )\n }\n
\n )\n}","import { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n tileSize : css(mq({\n //border : '1px solid red',\n position : 'relative',\n height : ['300px', '450px'],\n backgroundImage:'url(\"/assets/logos/logo.png\")',\n backgroundPosition:'center',\n backgroundSize:'contain',\n backgroundRepeat: 'no-repeat',\n 'img' : {\n //border : '1px solid red'\n position : 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n '@media(max-width:600px)' : {\n height : '100%',\n width: 'auto'\n }\n }\n })),\n\n banerIconsBar : css({\n textAlign : 'center',\n backgroundColor : '#fe3a43',\n padding : '0.3rem 0',\n display : 'flex',\n flexDirection : 'row',\n flexWrap : 'wrap',\n justifyContent : 'center',\n 'svg' : {\n width : '32px',\n height : '32px',\n color : 'white'\n },\n // '.bar__item' : {\n // margin : '0px 20px',\n // cursor : 'pointer',\n // '&:hover' : {\n // textDecoration : 'unset'\n // }\n // },\n '.bar__item' : mq({\n margin : ['0px 15px', null, '0px 20px'],\n cursor : 'pointer',\n '&:hover' : {\n textDecoration : 'unset'\n }\n }),\n '.bar__item.booking__button' :mq({\n margin : ['0px 10px', null, '0px 15px'],\n }),\n '.icon__text' : {\n fontSize : '.6rem',\n color : '#fff'\n },\n '@media(max-width:600px)' : {\n marginTop:'-7px'\n }\n // '&.dock' : mq({\n // position:'fixed',\n // top:['50px', '44px', '56px'],\n // width: '100%',\n // zIndex:'9'\n // })\n }),\n\n cityName : css(mq({\n //textAlign : 'center',\n margin : '0px',\n fontSize : ['1.6rem', '1.8rem'],\n marginTop: '0.5rem',\n marginBottom: '0.5rem'\n })),\n\n productName : css(mq({\n //textAlign : 'center',\n margin : '0px'\n //fontSize : ['2rem']\n })),\n\n detailContainer : css({\n // '.Collapsible' : {\n // //backgroundColor : 'grey'\n // },\n // '.Collapsible__contentInner' : {\n // padding: '10px',\n // //border: '1px solid red',\n // borderTop: '0',\n // fontSize : '14px',\n // 'p' : {\n // marginBottom: '10px',\n // fontSize: '14px',\n // lineHeight: '20px',\n // '&:last-child' : {\n // marginBottom: '0'\n // }\n // }\n // },\n // '.Collapsible__trigger' : {\n // display: 'block',\n // fontWeight: '400',\n // textDecoration: 'none',\n // position: 'relative',\n // //border: '1px solid white',\n // borderBottom: '1px solid #252525',\n // padding: '10px',\n // background: 'transparent',\n // color: '#252525',\n // cursor : 'pointer',\n // '&:after' : {\n // content: '\"\"',\n // position: 'absolute',\n // right: '10px',\n // top: '10px',\n // display: 'block',\n // transition: 'transform 300ms',\n // backgroundImage : 'url(\"/assets/icons/arrow.svg\")',\n // padding : '15px',\n // backgroundSize: 'contain',\n // backgroundPosition: 'center'\n // },\n // '&.is-open' : {\n // '&:after' : {\n // transform: 'rotateZ(180deg)'\n // }\n // },\n // '&.is-disabled' : {\n // opacity: '0.5',\n // backgroundColor: 'grey'\n // },\n // 'CustomTriggerCSS' : {\n // backgroundColor: 'lightcoral',\n // transition: 'background-color 200ms ease'\n // },\n // '.CustomTriggerCSS--open' : {\n // backgroundColor: 'darkslateblue'\n // },\n // '.Collapsible__Custom-sibling' : {\n // padding: '5px',\n // fontSize: '12px',\n // backgroundColor: '#CBB700',\n // color: 'black'\n // }\n // }\n marginTop: '2rem'\n }),\n atdwLoaction__click : css({\n position : 'absolute',\n width : '100%',\n height:'48px',\n zIndex: '99999',\n cursor: 'pointer'\n }),\n atdwDes : css({\n 'p' : {\n marginBottom : '1rem'\n },\n 'p:last-child' : {\n marginBottom : '0px'\n }\n }),\n serviceTiles : css({\n display: 'flex',\n alignItems: 'stretch',\n flexWrap: 'wrap',\n //justifyContent: 'space-between'\n justifyContent: 'start'\n }),\n\n info : css({\n 'ul, li' : {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n display: 'inline-block',\n 'li' : {\n margin: '0 .7rem 0 0',\n padding: '0 .7rem 0 0',\n listStyle: 'none',\n borderRight: '1px solid black',\n lineHeight: '1',\n '&:last-of-type' : {\n borderRight: '0'\n }\n }\n },\n marginBottom:'0.5rem'\n }),\n\n flag : css({\n marginTop:'1rem',\n marginBottom:'0.5rem',\n 'ul, li' : {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n display: 'inline-block',\n 'li' : {\n margin: '0 .7rem 0 0',\n padding: '0 .7rem 0 0',\n listStyle: 'none',\n //borderRight: '1px solid black',\n lineHeight: '1',\n // '&:last-of-type' : {\n // borderRight: '0'\n // }\n '&:last-child' : {\n marginRight: '0px',\n paddingRight:'0px'\n }\n }\n }\n }),\n contact_text : css(mq({\n fontSize: ['1.6rem', '1.8rem']\n })),\n gps_text : css(mq({\n display: ['inline-block', 'inline']\n })),\n\n booking__button : {\n svg : {\n transition: 'all 0.5s ease-in-out'\n },\n '&:hover' : {\n svg:{\n transform:'translateY(-3px)'\n },\n img : {\n transform:'scale(1.2)'\n }\n }\n },\n booking_button_image : {\n height: '32px',\n transition: 'all 0.5s ease-in-out',\n //margin : ['0px 10px', null, '0px 15px'],\n }\n}","import React, { useState, useEffect } from 'react';\nimport { useGet } from 'components';\nimport { Item } from 'cms/items/item';\nimport { NotFound } from 'components';\nimport env from 'env';\nimport { useStore } from \"store/storeProvider\";\nimport { ErrorPopup } from 'components';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPartial() {\n const { dispatch } = useStore();\n const [pageLoaded, setPageLoaded] = useState(false);\n //const [page, setPage] = useState(null);\n //const path = usePath();\n //log('view page', path);\n const pathname = '/partials/common-footer';\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n if (get.loading()) {\n return
\n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.isLoading());\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 //dispatch({ type: 'SET_STATE', payload: { page: pageData, menu: menuData } })\n dispatch({ type: 'SET_PAGE', payload: pageData })\n dispatch({ type: 'SET_MENU', payload: menuData })\n //document.title = pageData.pageTitle;\n return null;\n } else if (!pageData) {\n return ()\n }\n\n log('3. call rendering memo')\n return ;\n}\n\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
\n )\n }\n );\n return (\n <>\n {sectionItems}\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\n","//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 marginTop:'2rem',\n marginBottom:'2rem'\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\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\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'\n//import utils from 'utils';\n//import cmsUtils from 'cms/utils/cmsUtils';\n\nconst options = {\n enablePanzoom : false,\n showCaption : false\n};\n\nexport function PhotoGallery(props){\n const multimedia2 = props.item2;\n const cssClass = 'atdw_photoGallery';\n return(\n
\n

Gallery :

\n \n
\n \n {/*
\n \"Caption\"\n
\n
\n \"Caption\"\n
*/}\n { \n multimedia2.map((item, index) => {\n return(\n
\n {item[0].altText}/\n
\n )\n })\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ); \n}","import { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n \n serviceTile : css(mq({\n flexGrow: '1',\n flexShrink: '0',\n \n // flexBasis: ['260px', '260px', '334px', '299px', '267px'],\n // maxWidth: ['100%', '100%', '334px', '299px', '267px'],\n flexBasis: ['100%', '48%', null, '32%', '32.3%'],\n maxWidth: ['100%', '49%', null, '33%', '32.3%'],\n\n margin: '10px 5px',\n backgroundColor : '#ebebeb',\n '& a' : {\n textDecoration : 'none',\n color : '#252525'\n },\n 'hr' : {\n height: '2px',\n border: '0px',\n backgroundImage: 'linear-gradient(90deg,#fe3a43,transparent)'\n },\n '&:hover' : {\n '.viewMore' : {\n display: 'block'\n },\n '.bg::after' : {\n content: '\"\"',\n backgroundColor: 'rgba(0,0,0,0.3)',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n }\n }\n })),\n bgContainer :css({\n paddingTop: '60%',\n position:'relative'\n }),\n bg : css({\n //paddingTop: '60%',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n width: '100%',\n height:'100%',\n position:'absolute',\n top:'0px'\n //position:'relative'\n }),\n town : css({\n padding : '0rem 0.5rem',\n backgroundColor : '#fe3a43',\n fontWeight : '700',\n color:'white',\n lineHeight: '1.1',\n paddingBottom:'3px',\n paddingTop:'2px'\n }),\n title : css({\n lineHeight:'1',\n fontWeight:'700',\n fontSize:'0.9rem',\n marginTop: '0.1rem'\n }),\n descContainer : css({\n padding : '0.2rem 0.5rem',\n paddingBottom : '0.5em',\n '& hr' :{\n margin : '0.3rem 0rem'\n }\n }),\n desc : css({\n fontSize : '0.8rem'\n }),\n shotDesc : css({\n fontSize : '0.8rem',\n marginTop: '0.2rem',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: '5',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n minHeight: '6rem'\n }),\n viewMore : css({\n border: '3px solid white',\n position:'absolute',\n top:'50%',\n left:'50%',\n transform:'translate(-50%, -50%)',\n color:'white',\n padding:'0.5rem 1rem 7px',\n fontWeight:'700',\n display:'none',\n zIndex:'9',\n width: '150px'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\n//import { SiteLink } from 'components';\n//import cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport style from './style';\nimport { Link } from 'react-router-dom';\n\nexport function ServiceTile(props){\n const service = props.service;\n const atdwName = props.atdwName;\n const slug = props.slug;\n const txacheckindate = props.txacheckindate;\n \n const getImageUrl = (() => {\n let imgUrl = '/assets/logos/logo.png';\n for(var i in service.serviceMultimedia){\n if(service.serviceMultimedia[i].attributeIdSizeOrientation === '4X3' && parseInt(service.serviceMultimedia[i].width) <= 800){\n imgUrl = service.serviceMultimedia[i].serverPath;\n break;\n }\n }\n return imgUrl;\n });\n \n return(\n //id={product.productId}\n //+ product.slug\n slug ?\n
\n \n
\n
\n
\n
\n VIEW MORE\n
\n
\n
\n\n
\n { atdwName }\n
\n
\n
\n { service.serviceName }\n
\n
\n
\n { service.serviceDescription }\n
\n
\n \n
: null\n )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { useState, useEffect, Fragment, useRef } from 'react';\nimport env from 'env';\nimport { useRouter, NotFound } from 'components';\nimport Slider from \"react-slick\";\nimport style from './style';\nimport { MdDirections, MdCall, MdWeb } from \"react-icons/md\";\nimport { FaCircle } from \"react-icons/fa\";\n//import { SiteLink } from 'components';\n//import Collapsible from 'react-collapsible';\nimport { ViewPartial } from 'cms/pages/partials/viewPartial';\n//import { MetaTag } from 'components';\n//import utils from 'utils';\nimport { PhotoGallery } from '../photoGallery/view';\nimport { ServiceTile } from '../serviceTile/view';\nimport { Loading, MetaTag } from 'components';\nimport { gtm } from '../../../lib/tracking';\nimport utils from '../../../utils';\nimport { useStore } from '../../../store';\n\nfunction AtdwService(props){\n const services = props.services;\n const atdwName = props.atdwName;\n const slugs = props.slugs;\n const txacheckindate = props.txacheckindate;\n\n const getSlugName = ((serviceName)=>{\n for(var i in slugs){\n if(slugs[i].serviceName === serviceName){\n return slugs[i];\n }\n }\n });\n\n return (\n
\n
\n {services.map((item, index) => )}\n
\n
\n )\n}\n\nfunction AtdwPageBaner(props){\n const multimedia = props.multimedia;\n const primaryPhone = props.primaryPhone;\n const siteUrl = props.siteUrl;\n const bookingUrl = props.bookingUrl;\n\n const 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 //media={'(min-width:' + _item.width + 'px)'}\n return(\n
\n \n {\n multimedia.map((item, index) => {\n return (\n
\n \n {\n item.map((_item, _index) => {\n return(\n \n )\n })\n }\n \"image2\"/\n \n
\n )\n })\n }\n
\n
\n {\n primaryPhone === '' ? null : (\n \n \n
PHONE
\n
\n )\n }\n\n
{\n document.getElementById('atdwPageLocation').scrollIntoView({behavior:'smooth', block:'center'});\n }}>\n \n
LOCATION
\n
\n\n {\n siteUrl === '' ? null : (\n \n \n
WEBSITE
\n
\n )\n }\n\n {\n bookingUrl === '' ? null : (\n \n {/* */}\n \"booking_icon\"\n
BOOKINGS
\n
\n )\n }\n
\n
\n )\n}\n\n// function AtdwContactDetails(props){\n// const communication = props.communication;\n// return (\n// \n// {\n// communication.map((item, index) => {\n// return(\n//

\n// {item.attributeIdCommunicationDescription + ' : ' + item.communicationDetail}\n//

\n// )\n// })\n// }\n//
\n// )\n// }\n\n// function AtdwDateTime(props){\n// const dates = props.dates;\n// const todayDate = new Date();\n// return (\n \n// dates.length > 0 ? (\n// \n//
\n// {\n// dates.map((item, index) => {\n// var pDate = new Date(item.frequencyStartDate);\n// if( pDate >= todayDate){\n// return(\n//
\n// { \n// ((''+ pDate.getDate()).length < 2 ? '0' + pDate.getDate() : ''+pDate.getDate()) + '-' +\n// ((''+(pDate.getMonth() + 1)).length < 2 ? '0' + (pDate.getMonth() + 1) : ''+(pDate.getMonth() + 1)) + '-' +\n// pDate.getFullYear() + ' : ' +\n// item.frequencyStartTime\n// }\n//
\n// )\n// }\n// return null;\n// })\n// }\n//
\n//
\n// ):null\n// )\n// }\n\nfunction AtdwAttributes(props){\n const features = props.features;\n console.log('AtdwAttributes ->', features);\n return( \n \n

Features

\n
\n {\n features.map((item, index) =>{\n return(\n
\n \n {item.attributeIdDescription} \n
\n )\n })\n }\n
\n
\n )\n}\n\nfunction AtdwLocation(props){\n\n const productName = props.productName;\n const geoCode = props.geoCode;\n const address = props.address;\n const postCode = props.postCode;\n //const _address = (address + '+SA+' + postCode).replace(/\\s+/g, '+');\n const primaryPhone = props.primaryPhone;\n const email = props.email;\n const siteUrl = props.siteUrl;\n const flag = props.flag;\n const ele = useRef(null);\n const bookingUrl = props.bookingUrl;\n\n useEffect(() => {\n var map, marker;\n map = new window.google.maps.Map(ele.current, {\n center: {lat: geoCode.lat, lng: geoCode.lng},\n zoom: 15\n });\n marker = new window.google.maps.Marker({\n position: {lat: geoCode.lat, lng: geoCode.lng},\n map: map,\n title:productName\n });\n console.log(marker);\n }, [productName, geoCode]);\n //const result = [];\n const getFlag = (()=> {\n let result = [];\n for(var i in flag){\n if(flag[i].attributeId === 'BIG4'){\n result.push(\n
  • \n \"image2\"/\n
  • );\n }\n }\n return(\n result.length > 0 ?\n
    \n
      \n {result}\n
    \n
    : null\n )\n });\n\n return(\n\n \n\n

    { 'Contact ' + productName }

    \n

    { address + ' SA ' + postCode}

    \n
    \n {/* {'GPS: South ' + geoCode.lat + ' East ' + geoCode.lng} */}\n { 'GPS: South ' + geoCode.lat } \n { 'East ' + geoCode.lng } \n
    \n \n {\n getFlag()\n }\n\n {\n bookingUrl === '' ? null : (\n \n )\n }\n\n
    \n
    \n {/* \n */}\n
    \n\n
    \n )\n}\n\nfunction getMetaTag(product, slug) {\n gtm.pageView('/atdwproduct/' + slug);\n return {\n title: product.productName,\n description: product.productShortDescription,\n keywords: '',\n heroImageUrl: product.multimedia[0].serverPath,\n language: 'English',\n country: 'Australia',\n siteName: 'Light Regional Council',\n url: utils.site.resourcePath('/atdwproduct/' + slug)\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n }\n}\n\nexport function AtdwPage(){\n //const AtdwPageContext = React.createContext(null);\n const { dispatch } = useStore();\n const slug = useRouter().query.slug;\n const [atdwProduct, setAtdwProduct] = useState({\n product : null,\n serviceSlugs : null,\n atdwEx : null,\n primaryPhone : '',\n address : '',\n postCode : '',\n email : '',\n siteUrl : '',\n bookingUrl : '',\n geoCode : {lat : 0, lng : 0},\n features : [],\n multimedia : [],\n flag : [],\n error : ''\n });\n\n console.log(\"atdwProduct\", atdwProduct);\n \n // const 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 txacheckindate = new URLSearchParams(window.location.search).get(\"txacheckindate\");\n //console.log(\"txacheckindate\", txacheckindate);\n\n useEffect(() => { \n const abortController = new AbortController();\n \n const fetchData = async () => {\n const res = await fetch(env.apiBase + \"/api/atdw/getproduct/\" + slug, {signal: abortController.signal});\n const data = await res.json();\n\n if(data === 'error'){\n setAtdwProduct(pre => {\n let _new = {...pre};\n _new.error = \"error\";\n return _new;\n });\n return;\n }\n\n const _preParkName = data.product.productName;\n setAtdwProduct(pre => {\n\n let _new = {...pre};\n _new.product = data.product;\n _new.serviceSlugs = data.servicesSlug;\n _new.atdwEx = data.atdwEx;\n for(var i in _new.product.addresses){\n if(_new.product.addresses[i].attributeIdAddress === \"PHYSICAL\"){\n _new.geoCode.lat = Number(_new.product.addresses[i].geocodeGdaLatitude);\n _new.geoCode.lng = Number(_new.product.addresses[i].geocodeGdaLongitude);\n _new.address = _new.product.addresses[i].addressLine1;\n _new.postCode = _new.product.addresses[i].addressPostalCode;\n break;\n }\n }\n _new.product.communication.forEach(el => {\n if(el.attributeIdCommunicationDescription === 'Primary Phone'){\n _new.primaryPhone = el.communicationDetail;\n }\n else if(el.attributeIdCommunicationDescription === 'Email Enquiries'){\n _new.email = el.communicationDetail;\n }\n else if(el.attributeIdCommunicationDescription === 'URL Enquiries'){\n _new.siteUrl = el.communicationDetail;\n }\n else if(el.attributeIdCommunicationDescription === 'Booking URL'){\n _new.bookingUrl = el.communicationDetail;\n }\n });\n\n // if(_new.product.externalSystems.length > 0){\n // for(var nn in _new.product.externalSystems){\n // if(_new.product.externalSystems[nn].externalSystemCode === \"TXA_DEFAULT\" || \n // (_new.product.externalSystems[nn].externalSystemCode === \"TXA_MULTI\" && env.MultiTxaCode.includes(_new.product.externalSystems[nn].externalSystemText)) ||\n // (_new.product.externalSystems[nn].externalSystemCode === \"TXA_CODE\" && env.MultiTxaCode.includes(_new.product.externalSystems[nn].externalSystemText))) {\n // let psn = _new.product.externalSystems[nn].externalSystemText;\n // _new.bookingUrl = \"https://www.au.v3travel.com/CABS4/Pages/Availability.aspx?exl_dn=SAParks_web&exl_psn=\" + psn + \"&exl_ad=2&exl_ch=0&exl_dte=\" + ((txacheckindate && txacheckindate !== \"\") ? txacheckindate : '')\n // //_new.bookingUrl = \"https://www.au.v3travel.com/CABS4/Pages/Availability.aspx?exl_dn=SAParks_web&exl_psn=\" + psn + \"&exl_ad=2&exl_ch=0&exl_dte=\";\n // break;\n // }\n // }\n // }\n\n if(_new.atdwEx){\n if(_new.atdwEx.txaCode !== null && _new.atdwEx.txaCode !== ''){\n _new.bookingUrl = \"https://book.txa.com.au/v4/Pages/Availability.aspx?exl_dn=SAParks_web&exl_psn=\" + _new.atdwEx.txaCode + \"&exl_ad=2&exl_ch=0&exl_dte=\" + ((txacheckindate && txacheckindate !== \"\") ? txacheckindate : '')\n }\n }\n \n _new.product.attributes.forEach(el => {\n if(el.attributeTypeId === \"ENTITY FAC\"){\n _new.features.push(el);\n }\n else if(el.attributeTypeId === \"MEMBERSHIP\"){\n _new.flag.push(el);\n }\n });\n\n let va = [];\n //let checkImageType = false;\n let _tempDataId;\n for(var n = 0; n < _new.product.multimedia.length; n++){\n if(_new.product.multimedia[n].attributeIdMultimediaContent === 'IMAGE' &&\n _new.product.multimedia[n].attributeIdSizeOrientation === '4X3' &&\n parseInt(_new.product.multimedia[n].width) >= 800 ){\n if(!_tempDataId){\n _tempDataId = _new.product.multimedia[n].multimediaId;\n }\n \n if(_tempDataId === _new.product.multimedia[n].multimediaId){\n va.push(_new.product.multimedia[n]);\n } \n else{\n _new.multimedia.push(va);\n va = [];\n va.push(_new.product.multimedia[n]);\n _tempDataId = _new.product.multimedia[n].multimediaId;\n }\n }\n\n if(n === (_new.product.multimedia.length - 1) && va.length > 0){\n _new.multimedia.push(va);\n }\n }\n return _new;\n }); \n dispatch({type:'SET_STATE', payload : {preParkName : _preParkName }});\n };\n \n fetchData();\n return () => {\n abortController.abort();\n };\n \n // eslint-disable-next-line\n }, [slug, txacheckindate]);\n\n function GetDes(prop){\n let _texts = prop.text.split(\"\\n\");\n return (\n _texts.map((text, index) =>

    {text}

    )\n )\n }\n \n return( \n \n { \n atdwProduct.product ? \n
    \n \n \n
    \n
    \n
    \n

    { atdwProduct.product.productName}

    \n

    { atdwProduct.product.cityName}

    \n
    \n \n
    \n\n {\n atdwProduct.bookingUrl !== '' &&\n \n }\n\n
    \n \n
    \n {\n atdwProduct.product.services.length > 0 &&\n \n

    Room Type :

    \n \n
    \n }\n\n {\n atdwProduct.multimedia.length > 0 &&\n \n } \n
    \n
    \n \n
    \n
    \n
    \n
    : (atdwProduct.error === \"error\" ? \n : ) \n }\n \n
    \n )\n}","import React from 'react';\nconst AtdwContext = React.createContext(null);\nexport { AtdwContext };","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default{\n atdwMap : css({\n maxWidth:'960px',\n margin: 'auto',\n '.info__window' : {\n maxWidth: '300px'\n },\n '.info__title' : {\n fontWeight: '700',\n fontSize: '15px'\n },\n '.info__town' : {\n fontWeight: '300',\n fontSize: '13px',\n margin:'0.2rem 0px'\n }\n }),\n filters : css({\n display:'flex',\n flexDirection:'row',\n flexWrap:'wrap',\n justifyContent:'center',\n marginTop: '0.5rem',\n marginBottom:'0.5rem',\n '.btn' : {\n lineHeight: '1',\n margin:'5px',\n fontSize:'0.9rem'\n },\n '.btn.selected' : {\n backgroundColor : '#030303',\n borderColor: '#030303'\n }\n }),\n popupBackground : css({\n backgroundColor:'rgba(0,0,0,0.3)',\n position: 'fixed',\n top:'0px',\n left:'0px',\n width:'100%',\n height: '100%',\n zIndex:'9999'\n }),\n container : css({\n position: 'fixed',\n width: '95%',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n marginTop: '-1rem',\n zIndex:'9999',\n backgroundColor:'white',\n padding: '1rem',\n maxWidth:'450px'\n }),\n popupTitle : css({\n fontWeight: '700',\n fontSize: '1rem'\n }),\n popupTown : css({\n fontWeight: '300',\n fontSize: '0.8rem',\n margin:'0.2rem 0px'\n }),\n popupDesc : css({\n fontSize:'0.8rem'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport utils from 'utils';\nimport style from './style';\nimport { useState, useEffect, useRef, useCallback, Fragment } from 'react';\nimport env from 'env';\n//import { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { useHistory } from \"react-router-dom\";\nimport { createPortal } from \"react-dom\";\n\nfunction Portal({children}){\n //const mount = document.getElementById(\"portal-root\");\n //const el = document.createElement(\"div\");\n const [el] = useState(document.createElement('div'));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\nexport function AtdwMap(props){\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'atdwMap', item.cssClass || item.anchorName || '');\n const [mapSate, setMapSate ] = useState({\n currentFilterType :'ACCOMM',\n currentFilterArea :'all',\n trigger:0,\n fetchAble:true,\n data : []\n //accomm : [],\n //attraction : []\n });\n\n const el = useRef(null);\n const history = useHistory();\n const [openPopup, setOpenPopup] = useState(false);\n const [popupData, setPopupData] = useState();\n \n useEffect(()=>{\n if(mapSate.fetchAble === false){\n return;\n }\n const fetchData = async () =>{\n const res = await fetch(env.apiBase + \"/api/atdw/getproductsall/\" + mapSate.currentFilterArea);\n const data = await res.json();\n setMapSate(pre=>{\n let _new = {...pre};\n _new.fetchAble = false;\n \n let items = [];\n _new.data = data.products;\n items = _new.data;\n \n let center = {lat: -35.0855058, lng: 135.5129228};\n let zoom = 6;\n\n if(mapSate.currentFilterArea === \"Adelaide\"){\n center = { lat: -34.9262741, lng: 138.5971424 };\n zoom = 9;\n }\n else if(mapSate.currentFilterArea === \"Adelaide Hills\"){\n center = { lat: -35.042298, lng: 138.8284648 };\n zoom = 9;\n }\n\n var map = new window.google.maps.Map(el.current, {\n center: center,\n zoom: zoom\n });\n\n if(items.length > 0){\n items.forEach(_el => {\n //console.log(\"_\", _el);\n // let icon = \"default.png\";\n // if(_el.additionalData.membership.includes(\"TTP\")){\n // icon = \"maker_ttp.png\";\n // }\n // else if(_el.additionalData.membership.includes(\"BIG4\")){\n // icon = \"maker_big4.png\";\n // }\n // else if(_el.additionalData.membership.includes(\"KUIPARK\")){\n // icon = \"maker_kuipark.png\";\n // }\n \n let geoCode = {\n lat : Number(_el.additionalData.googlemap.geocodeGdaLatitude),\n lng : Number(_el.additionalData.googlemap.geocodeGdaLongitude)\n };\n var marker = new window.google.maps.Marker({\n position: {lat: geoCode.lat, lng: geoCode.lng},\n map: map,\n title:_el.productName\n //icon : '/assets/icons/' + icon\n });\n var infowindow = new window.google.maps.InfoWindow({\n //content : _el.shortDesc\n content : '
    ' +\n '
    ' + _el.productName + '
    ' + \n '
    ' + _el.town + '
    ' + \n '
    ' + _el.address + ' ' + _el.town + '
    ' + \n '

    ' + _el.shortDesc + '

    ' + \n '
    '\n // contet : \"
    \n //
    {{ model.productName }}
    \n //
    {{ model.address + ' '+ model.town }}
    \n //

    {{ model.shortDesc }}

    \n //
    \";\n });\n // marker.addListener('click', function(){\n // infowindow.open(map, marker);\n // });\n \n var isMobile = false;\n //var isMobile = true;\n if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {\n isMobile = true;\n }\n \n marker.addListener('mouseover', function(){\n if(!isMobile) {\n infowindow.open(map, marker);\n }\n });\n marker.addListener('mouseout', function(){ \n if(!isMobile) {\n infowindow.close();\n }\n });\n marker.addListener('click', function(){\n if(isMobile) {\n setPopupData({\n productName : _el.productName,\n address : _el.address,\n town : _el.town,\n desc : _el.shortDesc,\n slug : _el.slug\n });\n setOpenPopup(true); \n }\n else{\n history.push('/atdwproduct/' + _el.slug);\n }\n });\n });\n } \n return _new;\n });\n }\n fetchData();\n }, [mapSate, history]);\n\n const switchMap = useCallback((value)=>{\n setMapSate(pre=>{\n let _new = {...pre};\n _new.fetchAble = true;\n //_new.currentFilterType = value;\n _new.currentFilterArea = value;\n return _new;\n });\n }, []);\n\n const Filters = (() => {\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 return(\n
    \n
    \n
    \n
    \n \n \n {\n openPopup && \n \n
    \n
    \n
    { popupData.productName }
    \n
    { popupData.town }
    \n
    { popupData.address + ' ' + popupData.town }
    \n

    { popupData.desc }

    \n
    \n \n \n
    \n
    \n
    \n }\n
    \n
    \n )\n}","import { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n tileSize : css(mq({\n //border : '1px solid red',\n position : 'relative',\n height : ['300px', '450px'],\n backgroundImage:'url(\"/assets/logos/logo.png\")',\n backgroundPosition:'center',\n backgroundSize:'contain',\n backgroundRepeat: 'no-repeat',\n 'img' : {\n //border : '1px solid red'\n position : 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n '@media(max-width:600px)' : {\n height : '100%',\n width: 'auto'\n }\n }\n })),\n productName : css({\n //textAlign : 'center',\n margin : '0px'\n }),\n serviceName : css({\n //textAlign : 'center',\n margin : '0px'\n }),\n serviceDes : css({\n marginTop:'1rem',\n marginBottom:'1rem'\n }),\n banerIconsBar : css({\n textAlign : 'center',\n backgroundColor : '#fe3a43',\n padding : '0.3rem 0',\n display : 'flex',\n flexDirection : 'row',\n flexWrap : 'wrap',\n justifyContent : 'center',\n 'svg' : {\n width : '32px',\n height : '32px',\n color : 'white'\n },\n // '.bar__item' : {\n // margin : '0px 20px',\n // cursor : 'pointer',\n // '&:hover' : {\n // textDecoration : 'unset'\n // }\n // },\n '.bar__item' : mq({\n margin : ['0px 15px', null, '0px 20px'],\n cursor : 'pointer',\n '&:hover' : {\n textDecoration : 'unset'\n }\n }),\n '.bar__item.booking__button' :mq({\n margin : ['0px 10px', null, '0px 15px'],\n }),\n '.icon__text' : {\n fontSize : '.6rem',\n color : '#fff'\n },\n '@media(max-width:600px)' : {\n marginTop:'-7px'\n }\n // '&.dock' : mq({\n // position:'fixed',\n // top:['50px', '44px', '56px'],\n // width: '100%',\n // zIndex:'9'\n // })\n }),\n contact_text : css(mq({\n fontSize: ['1.6rem', '1.8rem']\n })),\n gps_text : css(mq({\n display: ['inline-block', 'inline']\n })),\n info : css({\n 'ul, li' : {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n display: 'inline-block',\n 'li' : {\n margin: '0 .7rem 0 0',\n padding: '0 .7rem 0 0',\n listStyle: 'none',\n borderRight: '1px solid black',\n lineHeight: '1',\n '&:last-of-type' : {\n borderRight: '0'\n }\n }\n },\n marginBottom:'0.5rem'\n }),\n flag : css({\n marginTop:'1rem',\n marginBottom:'0.5rem',\n 'ul, li' : {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n display: 'inline-block',\n 'li' : {\n margin: '0 .7rem 0 0',\n padding: '0 .7rem 0 0',\n listStyle: 'none',\n //borderRight: '1px solid black',\n lineHeight: '1',\n // '&:last-of-type' : {\n // borderRight: '0'\n // }\n '&:last-child' : {\n marginRight: '0px',\n paddingRight:'0px'\n }\n }\n }\n }),\n\n booking__button : {\n svg : {\n transition: 'all 0.5s ease-in-out'\n },\n '&:hover' : {\n svg:{\n transform:'translateY(-3px)'\n },\n img : {\n transform:'scale(1.2)'\n }\n }\n },\n booking_button_image : mq({\n height: '32px',\n transition: 'all 0.5s ease-in-out',\n //margin : ['0px 10px', null, '0px 15px'],\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { useState, useEffect, Fragment, useRef } from 'react';\nimport env from 'env';\nimport { useRouter } from 'components';\nimport Slider from \"react-slick\";\nimport style from './style';\nimport { FaCircle } from \"react-icons/fa\";\nimport { ViewPartial } from 'cms/pages/partials/viewPartial';\nimport { MdDirections, MdCall, MdWeb } from \"react-icons/md\";\nimport { useStore } from '../../../store';\n\nfunction ServicePageBanner(props){\n //console.log(\"props11111111\", props);\n const multimedia = props.multimedia;\n const 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 primaryPhone = props.primaryPhone || '';\n const siteUrl = props.siteUrl || '';\n const bookingUrl = props.bookingUrl || '';\n\n return(\n
    \n \n {\n multimedia.length > 0 ?(\n multimedia.map((item, index) => {\n return(\n
    \n \n {\n item.map((_item, _index) => {\n return(\n \n )\n })\n }\n \"image2\"\n \n
    \n )\n })\n ) : \n
    \n {/* \"image2\" */}\n
    \n }\n
    \n
    \n {\n primaryPhone === '' ? null : (\n \n \n
    PHONE
    \n
    \n )\n }\n
    {\n document.getElementById('atdwPageLocation').scrollIntoView({behavior:'smooth', block:'center'});\n }}>\n \n
    LOCATION
    \n
    \n\n {\n siteUrl === '' ? null : (\n \n \n
    WEBSITE
    \n
    \n )\n }\n {\n (bookingUrl && bookingUrl !== '') &&\n \n \"booking_icon\"\n
    BOOKINGS
    \n
    \n }\n
    \n
    \n )\n}\n\nfunction ServiceFeatures(props){\n const features = props.features;\n return(\n \n

    Features

    \n
    \n {\n features.map((item, index) =>{\n return(\n
    \n \n {item.attributeIdDescription} \n
    \n )\n })\n }\n
    \n
    \n )\n}\n\nfunction AtdwLocation(props){\n const productName = props.productName;\n const geoCode = props.geoCode;\n const address = props.address;\n const postCode = props.postCode;\n //const _address = (address + '+SA+' + postCode).replace(/\\s+/g, '+');\n const primaryPhone = props.primaryPhone || '';\n const email = props.email || '';\n const siteUrl = props.siteUrl || '';\n const flag = props.flag;\n const ele = useRef(null);\n const bookingUrl = props.bookingUrl || '';\n\n useEffect(() => {\n var map, marker;\n map = new window.google.maps.Map(ele.current, {\n center: {lat: Number(geoCode.geocodeGdaLatitude), lng: Number(geoCode.geocodeGdaLongitude)},\n zoom: 15\n });\n marker = new window.google.maps.Marker({\n position: {lat: Number(geoCode.geocodeGdaLatitude), lng: Number(geoCode.geocodeGdaLongitude)},\n map: map,\n title:productName\n });\n console.log(marker);\n }, [productName, geoCode]);\n\n const getFlag = (()=> {\n let result = [];\n for(var i in flag){\n if(flag[i].attributeId === 'BIG4'){\n result.push(\n
  • \n \"image2\"/\n
  • );\n }\n }\n return(\n result.length > 0 ?\n
    \n
      \n {result}\n
    \n
    : null\n )\n});\n\n return(\n
    \n\n

    { 'Contact ' + productName }

    \n

    { address + ' SA ' + postCode}

    \n
    \n {/* {'GPS: South ' + geoCode.lat + ' East ' + geoCode.lng} */}\n { 'GPS: South ' + geoCode.geocodeGdaLatitude } \n { 'East ' + geoCode.geocodeGdaLongitude } \n
    \n \n {\n getFlag()\n }\n {\n bookingUrl === '' ? null : (\n \n )\n }\n\n
    \n
    \n {/* \n */}\n
    \n \n
    \n )\n}\n\nexport function ServicePage(){\n const { dispatch } = useStore();\n const slug = useRouter().query.slug;\n const [atdwService, setAtdwService] = useState({\n service : null,\n product : null,\n multimedia : [],\n features : [],\n flag : [],\n bookingUrl : ''\n });\n\n const txacheckindate = new URLSearchParams(window.location.search).get(\"txacheckindate\");\n console.log(\"txacheckindate\", txacheckindate);\n console.log(\"new URLSearchParams(window.location.search)\", new URLSearchParams(window.location.search));\n\n useEffect(()=>{\n const fetchData = async () => {\n const res = await fetch(env.apiBase + \"/api/atdw/getservice/\" + slug);\n const data = await res.json();\n\n if(data !== 'error'){\n setAtdwService(pre=>{\n let _new = {...pre};\n _new.service = data.service;\n _new.product = data.product;\n\n let va = [];\n for(var i = 0; i < _new.service.multimedia.length; i++){\n if(i === 0){\n va.push(_new.service.multimedia[i]);\n }\n\n if(_new.service.multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n _new.service.multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(_new.service.multimedia[i].width) >= 800 ){\n va.push(_new.service.multimedia[i]);\n }\n\n if(_new.service.multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n _new.service.multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(_new.service.multimedia[i].width) >= 800 ){\n va.push(_new.service.multimedia[i]);\n }\n\n if(i === (_new.service.multimedia.length - 1) && va.length > 0){\n let _images = va;\n va = [];\n _new.multimedia.push(_images);\n }\n }\n\n _new.service.attributes.forEach(el => {\n if(el.attributeTypeId === \"SVC FAC\"){\n _new.features.push(el);\n }\n });\n\n _new.product.additionalData.attributes.forEach(el => {\n if(el.attributeTypeId === \"MEMBERSHIP\"){\n _new.flag.push(el);\n }\n });\n\n if(_new.product.additionalData.bookingUrl && _new.product.additionalData.bookingUrl !== ''){\n _new.bookingUrl = _new.product.additionalData.bookingUrl.includes(\"http\") ? _new.product.additionalData.bookingUrl : 'https://' + _new.product.additionalData.bookingUrl; \n if(_new.bookingUrl.includes(\"//book.txa.com.au/v4/Pages/\")){\n _new.bookingUrl = _new.bookingUrl + ((txacheckindate && txacheckindate !== \"\") ? txacheckindate : '');\n } \n }\n\n if(_new.product.txaCode && _new.product.txaCode !== ''){\n _new.bookingUrl = \"https://book.txa.com.au/v4/Pages/Availability.aspx?exl_dn=SAParks_web&exl_psn=\" + _new.product.txaCode + \"&exl_ad=2&exl_ch=0&exl_dte=\" + ((txacheckindate && txacheckindate !== \"\") ? txacheckindate : '');\n }\n\n dispatch({type:'SET_STATE', payload : {preParkName : _new.product.productName }});\n\n return _new;\n });\n }\n };\n fetchData();\n\n // eslint-disable-next-line\n }, [slug]);\n\n return(\n \n {\n atdwService.service ?\n
    \n \n
    \n
    \n
    \n

    { atdwService.product.productName}

    \n

    { atdwService.service.serviceName}

    \n

    \n {atdwService.service.serviceDescription}\n

    \n\n {\n atdwService.bookingUrl !== '' &&\n // \n \n }\n\n \n \n
    \n
    \n
    \n
    : null\n }\n \n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport utils from 'utils';\nimport { AtdwSearchResult } from '../searchResult/view';\nimport { useState, useEffect, useMemo } from 'react';\nimport env from 'env';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nexport function MixedListings(props){\n\n const item = props.item;\n //const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'mixedlistings', item.cssClass || item.anchorName || '');\n const [atdwData, setAtdwData] = useState();\n\n const pages = useMemo(() => {\n return getPages(cmsUtils.payload(item, 'PageObjects'));\n },[item]);\n\n useEffect(() => {\n console.log('useEffect-MixedListings');\n const fetchData = async () =>{\n const res = await fetch(env.apiBase + \"/api/atdw/getmixedlistings\");\n const data = await res.json();\n //console.log(\"data\", data);\n for(var index in pages){\n let product = {\n productId : 'pagetypetile' + index,\n slug : pages[index].pageUrl,\n town : pages[index].tileButtonText,\n productName : pages[index].pageTitle,\n additionalData : {PRODUCTTYPES : []},\n shortDesc : pages[index].tileDesc,\n imageUrl : pages[index].imageUrl\n };\n data.products.push(product);\n } \n setAtdwData(data.products);\n }\n fetchData();\n }, [pages]);\n\n return(\n
    \n {\n atdwData && \n }\n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Fragment, useContext } from 'react';\n//import { SiteLink } from 'components';\n//import cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport style from './style';\nimport { Link } from 'react-router-dom';\nimport { AtdwContext } from '../index';\n\nexport function AtdwTile(props){\n\n const product = props;\n const fromCalled = props.fromCalled || \"\";\n const _atdwContext = useContext(AtdwContext);\n const checkPetFriendly = product.checkPetFriendly || false;\n\n //console.log(\"product ---\", product);\n \n const changeUpperCases = ((str) => {\n return str.replace(/\\w\\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});\n });\n\n return(\n
    \n {\n if(fromCalled !== \"search\"){\n //_atdwContext.setupAtdwDataHistory2(product.productId);\n }\n else{\n //console.log(\"ASFDsdfsdfsfdkj\");\n }\n }}>\n
    \n {\n (checkPetFriendly && checkPetFriendly === true) &&\n \n
    \n \"pet\"\n
    \n
    \n
    \n }\n
    \n
    \n {product.town === product.town.toUpperCase() ? changeUpperCases(product.town) : product.town }\n
    \n
    \n
    \n { product.productName === product.productName.toUpperCase() ? changeUpperCases(product.productName) : product.productName }\n
    \n
    \n {/*
    \n {\n product.additionalData.PRODUCTTYPES.map((item, index)=> {\n if(product.additionalData.PRODUCTTYPES.length === (index + 1)){\n return(\n {item.productTypeDescription}\n )\n }\n else{\n return (\n {item.productTypeDescription} | \n )\n }\n })\n }\n
    */}\n
    \n {product.shortDesc}\n
    \n
    \n \n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\n//import { useState, useEffect } from 'react';\nimport style from './style';\nimport { AtdwTile } from '../tile/view';\n\nexport function AtdwSearchResult(props){\n\n const atdwDatas = props.atdwData || [];\n const fromCalled = props.fromCalled || \"\";\n \n return(\n
    \n
    \n { atdwDatas.map((item, index) => )}\n {/* { atdwDatas.map((item, index) => {\n return ()\n })} */}\n
    \n
    \n )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { useEffect, Fragment } from 'react';\nimport env from 'env';\nimport { SiteLink} from 'components';\nimport { usePost } from 'components';\nimport { ErrorPopup, Loading } from 'components';\nimport { useRouter } from 'components';\nimport { AtdwSearchResult } from '../atdw/searchResult/view';\n\nexport function SearchResult(props) {\n \n const { query } = useRouter();\n const post = usePost();\n const keyword = query.q;\n //const keyword = query.search;\n //console.log(keyword);\n\n useEffect(() => {\n \n console.log('keyword', keyword);\n \n post.send(env.apiBase + '/api/search/search', { keyword: keyword });\n \n \n \n // eslint-disable-next-line\n }, [keyword]);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n\n const data = post.response;\n console.log(\"data\", data);\n const pages = data.pages;\n const atdw = data.atdw;\n\n // if (pages.length === 0) return (\n //
    \n // No result found.\n //
    \n // )\n return (\n \n {\n (pages.length > 0 || atdw.length > 0) ?\n \n {\n atdw.length > 0 &&\n
    \n

    ATDW

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

    Pages

    \n \n
    \n }\n
    :\n
    \n No results\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}","import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { SearchResult } from 'site/searchResult/searchResult';\nimport { AppVersion } from '../../../components';\n\nexport function Code(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, cmsOption);\n\n const code = cmsUtils.payload(item, 'Code');\n const codeType = cmsUtils.payload(item, 'CodeType');\n let controls = null;\n if (codeType === 'Json') {\n const codeJson = JSON.parse(code);\n if (codeJson.control === 'search-results'){\n controls = \n }\n else if(codeJson.control === 'app'){\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 'cms/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 'cms/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\n const cssClass = utils.classNames('cms_item', item.cssClass || item.anchorName || '');\n\n return (\n
    \n

    {title}

    \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 multiColumnPanelMain : css({\n maxWidth : '960px',\n margin : 'auto',\n '& .container' : mq({\n marginLeft: ['auto',null,null,null,'-15px'],\n marginRight: ['auto',null,null,null,'-15px']\n })\n })\n}","//import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport { Item } from 'cms/items/item';\nimport utils from 'utils';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\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\" && window.innerWidth <= 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}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\nexport default{\n banerIconsBar : css({\n textAlign : 'center',\n backgroundColor : '#fe3a43',\n padding : '0.3rem 0',\n display : 'flex',\n flexDirection : 'row',\n flexWrap : 'wrap',\n justifyContent : 'center',\n 'svg' : {\n width : '32px',\n height : '32px',\n color : 'white'\n },\n '.bar__item' : {\n margin : '0px 20px',\n cursor : 'pointer',\n '&:hover' : {\n textDecoration : 'unset'\n }\n },\n '.icon__text' : {\n fontSize : '.6rem',\n color : '#fff'\n },\n '&.atdw__item' : {\n '@media(max-width:600px)' : {\n marginTop:'-7px'\n }\n }\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport cmsUtils from '../../cms/utils/cmsUtils';\nimport utils from '../../utils';\nimport { MdDirections, MdCall, MdWeb, MdBook } from \"react-icons/md\";\nimport style from './style';\n\nexport function NonAtdwPageInfoBar(props){\n const item = props.item;\n //console.log(\"item\", item);\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'nonatdwpageinfobar', item.cssClass || item.anchorName || '');\n\n const phone = cmsUtils.payload(item, \"Phone\") || \"\";\n //const location = cmsUtils.payload(item, \"Location\") || \"\";\n const website = cmsUtils.payload(item, \"Website\") || \"\";\n const bookings = cmsUtils.payload(item, \"Bookings\") || \"\";\n\n return(\n
    \n
    \n \n \n
    PHONE
    \n
    \n\n
    {\n if(document.getElementById('atdwpagelocation')){\n document.getElementById('atdwpagelocation').scrollIntoView({behavior:'smooth', block:'center'});\n }\n }}>\n \n
    LOCATION
    \n
    \n\n \n \n
    WEBSITE
    \n
    \n\n \n \n
    BOOKINGS
    \n
    \n
    \n
    \n )\n}","import React, { useState, useEffect, useContext, createContext } from \"react\";\nimport * as firebase from \"firebase/app\";\nimport \"firebase/auth\";\nimport config from '../../../config';\n\n// Add your Firebase credentials\nfirebase.initializeApp(config.firebaseSettings);\n\nconst authContext = createContext();\n\n// Provider component that wraps your app and makes auth object ...\n// ... available to any child component that calls useAuth().\nexport function ProvideAuth({ children }) {\n const auth = useProvideAuth();\n return {children};\n}\n\n// Hook for child components to get the auth object ...\n// ... and re-render when it changes.\nexport const useAuth = () => {\n return useContext(authContext);\n};\n\n// Provider hook that creates auth object and handles state\nfunction useProvideAuth() {\n const [user, setUser] = useState(null);\n const [session, setSession] = useState(null);\n\n // Wrap any Firebase methods we want to use making sure ...\n // ... to save the user to state.\n const signin = (email, password) => {\n return firebase\n .auth()\n .signInWithEmailAndPassword(email, password)\n .then(response => {\n //setUser(response.user);\n setUserSession(response.user);\n return response.user;\n });\n };\n\n const signup = (email, password) => {\n return firebase\n .auth()\n .createUserWithEmailAndPassword(email, password)\n .then(response => {\n //setUser(response.user);\n setUserSession(response.user);\n return response.user;\n });\n };\n\n const signout = () => {\n return firebase\n .auth()\n .signOut()\n .then(() => {\n //setUser(null);\n setUserSession(null);\n });\n };\n\n const sendPasswordResetEmail = email => {\n return firebase\n .auth()\n .sendPasswordResetEmail(email)\n .then(() => {\n return true;\n });\n };\n\n const confirmPasswordReset = (code, password) => {\n return firebase\n .auth()\n .confirmPasswordReset(code, password)\n .then(() => {\n return true;\n });\n };\n\n async function setUserSession(user) {\n if (!user) {\n localStorage.setItem('user', null);\n setUser(null);\n setSession(null);\n return;\n }\n const tokenResult = await user.getIdTokenResult(/* forceRefresh */ false);\n console.log('setting sessions...', tokenResult.expirationTime);\n let session = wrapUser(user, tokenResult);\n localStorage.setItem('user', JSON.stringify(session));\n setUser(user);\n setSession(session);\n \n // const ajaxResult = await this.getUserProfile(user.uid).toPromise();\n // const errors = formUtils.getErrors(ajaxResult);\n // if (errors.length > 0) throw errors.join(\" \");\n // //console.log(ajaxResult, userJson);\n // userJson.profileCheched = true;\n // if (ajaxResult.results && ajaxResult.results.userInfo && ajaxResult.results.userInfo.roles)\n // userJson.roles = ajaxResult.results.userInfo.roles\n return session;\n }\n \n async function extendSession() {\n console.log('checking sessions...')\n if (session && session.expireAt) {\n if (user) {\n let now = new Date();\n //console.log(this.currentUser, ((+new Date(this.currentUser.expireAt)) - +now) / 60 / 1000)\n if ((+new Date(session.expireAt)) - +now < 11/*min*/ * 60 * 1000) {\n console.log('extending sessions...')\n const tokenResult = await user.getIdTokenResult(/* forceRefresh */ false);\n //console.log(tokenResult);\n let session = wrapUser(user, tokenResult);\n localStorage.setItem('user', JSON.stringify(session));\n setUser(user);\n setSession(session);\n }\n }\n\n }\n }\n\n function wrapUser(user, tokenResult) {\n return {\n uid: user.uid,\n email: user.email,\n displayName: user.displayName,\n photoUrl: user.photoURL,\n emailVerified: user.emailVerified,\n profileCheched: false,\n token: tokenResult ? tokenResult.token : null,\n roles: [],\n //refreshToken: user.refreshToken,\n expireAt: tokenResult ? tokenResult.expirationTime : null,\n expired() {\n return (+new Date(this.expireAt)) - +new Date() < 0\n }\n };\n } \n\n // Subscribe to user on mount\n // Because this sets state in the callback it will cause any ...\n // ... component that utilizes this hook to re-render with the ...\n // ... latest auth object.\n useEffect(() => {\n const unsubscribe = firebase.auth().onAuthStateChanged(user => {\n if (user) {\n //setUser(user);\n setUserSession(user);\n } else {\n //setUser(null);\n setUserSession(null);\n }\n });\n\n // Cleanup subscription on unmount\n return () => unsubscribe();\n // eslint-disable-next-line \n }, []);\n\n React.useEffect(() => {\n if (typeof window !== `undefined`) {\n console.log('starting session interval')\n let timer = setInterval(() => extendSession(), 5/*min*/ * 60 * 1000)\n return () => { clearInterval(timer) }\n }\n // eslint-disable-next-line \n }, [])\n\n\n // Return the user object and auth methods\n return {\n user,\n session,\n signin,\n signup,\n signout,\n sendPasswordResetEmail,\n confirmPasswordReset\n };\n}","import React from 'react';\nimport { useAuth } from '../../../../auth';\nimport { useRouter } from '../../../../components';\n\nexport function Login(props) {\n const [username, setUsername] = React.useState(\"\");\n const [password, setPassword] = React.useState(\"\");\n const [error, setError] = React.useState(\"\");\n const [pending, setPending] = React.useState(false);\n const auth = useAuth();\n\n const router = useRouter();\n\n function submit(e) {\n setPending(true);\n //console.log('loggin', username, password)\n e.preventDefault();\n e.stopPropagation();\n\n auth.signin(username, password).then(user => {\n console.log(user)\n setPending(false);\n setError('')\n router.push('/admin/dashboard')\n }).catch(error => {\n console.log(error)\n setPending(false);\n setError(error.message)\n })\n\n }\n return (\n
    \n

    Log In

    \n
    \n {/* */}\n
    \n
    \n
    \n \n {\n setUsername(event.target.value);\n }} />\n
    \n Email is invalid\n
    \n
    \n\n
    \n \n {\n setPassword(event.target.value);\n }} />\n
    \n Password is required\n
    \n
    \n {/* \n */}\n\n
    \n \n
    \n\n {error &&
    {error}
    }\n\n {/*
    \n \n
    */}\n\n
    \n\n {/*
    \n Or Log in with \n
    \n \n
    \n
    \n\n \n
    \n Don't have an account? Sign Up\n
    */}\n
    \n
    \n
    )\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\n//import cmsUtils from '../../cms/utils/cmsUtils';\nimport utils from '../../utils';\n//import style from './style';\nimport { Login as LoginA, useAuth } from '../../auth/index'\nimport { useRouter, SiteLink } from 'components';\n\nexport function Login(props){\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'login', item.cssClass || item.anchorName || '');\n const _useAusth = useAuth();\n const router = useRouter();\n \n return(\n
    \n {\n cmsOption.isCmsEdit ?\n
    \n                     Login Item \n                
    :\n (_useAusth.session && !_useAusth.session.expired() ?\n
    \n \n
    :\n //
    \n //
    \n // \n // \n //
    \n //
    \n // \n // \n //
    \n //
    \n //
    \n // \n //
    \n //
    \n
    \n \n
    \n \n Forgot Password?\n \n \n About SA Parks\n \n
    \n
    \n )\n }\n
    \n )\n}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default {\n formContainer : css({\n maxWidth:'550px',\n margin: 'auto',\n padding: '1rem 0px'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\n//import cmsUtils from '../../cms/utils/cmsUtils';\nimport utils from '../../utils';\nimport style from './style';\nimport { useAuth } from '../../auth/index'\n//import { useRouter } from 'components';\nimport { useState, useEffect } from 'react';\nimport env from 'env';\nimport { Loading } from 'components';\nimport { Redirect } from 'react-router-dom';\n\nexport function ChangeDetails(props){\n \n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'login', item.cssClass || item.anchorName || '');\n \n const _auth = useAuth();\n const [info, setInfo] = useState();\n const [buttonTrigger, setButtonTrigger] = useState(0);\n const [pageLoading, setPageLoading] = useState(true);\n const [redirect, setRedirect] = useState(false);\n const [msg, setMsg] = useState();\n \n const handChange = (el => {\n const elName = el.target.name;\n const elValue =el.target.value;\n setInfo({...info, [elName] : elValue});\n });\n\n function onSubmit(e) {\n e.preventDefault(); \n e.stopPropagation();\n setPageLoading(true);\n setMsg(null);\n setButtonTrigger(buttonTrigger + 1);\n }\n\n useEffect(() => { \n if(_auth.session && !_auth.session.expired() && !cmsOption.isCmsEdit){\n const fetchData = async () => {\n const res = await fetch(env.apiBase + '/api/profile/getuserprofile/' + _auth.session.uid, {\n method : 'get',\n headers: { 'Authorization': `Bearer ${_auth.session.token}` }\n });\n const data = await res.json();\n if(data.errors.length === 0){\n setInfo({\n organisation : data.results.userInfo.organisation || '',\n name : data.results.userInfo.name || '',\n password : '',\n checkPassword : false,\n passwordClue : data.results.userInfo.passwordClue || '',\n email : data.results.userInfo.email || '',\n token : _auth.session.token\n });\n setPageLoading(false);\n }\n }\n fetchData();\n }\n else{\n return;\n }\n }, [ _auth.session, cmsOption.isCmsEdit ]);\n\n useEffect(() => {\n if(buttonTrigger === 0){\n return;\n }\n const fetchData = async () => {\n const res = await fetch(env.apiBase + '/api/profile/updateinfo', {\n method : 'post',\n headers: { \n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${_auth.session.token}`\n },\n body: JSON.stringify(info)\n });\n const data = await res.json();\n console.log(data);\n if(data.errors.length === 0){\n setInfo({\n organisation : data.results.userInfo.organisation || '',\n name : data.results.userInfo.name || '',\n password : '',\n checkPassword : false,\n passwordClue : data.results.userInfo.passwordClue || '',\n email : data.results.userInfo.email || '',\n token : _auth.session.token\n });\n setTimeout(() => {\n setPageLoading(false);\n if(data.results.resetPassword === true){\n _auth.signout().then(user => {\n setRedirect(true);\n }); \n }\n }, 2000);\n }\n else{\n setMsg(data.errors[0].errorMessage);\n setPageLoading(false);\n }\n }\n fetchData();\n setButtonTrigger(0);\n }, [buttonTrigger, info, _auth]);\n\n return(\n\n
    \n {\n cmsOption.isCmsEdit ?\n
    \n                     Change Details \n                
    : (\n pageLoading ? : (redirect ? :\n
    \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n {\n handChange({target : {name : \"checkPassword\", value : e.target.checked}});\n }} checked={info.checkPassword} />\n \n
    \n \n {\n info.checkPassword ?\n
    \n \n \n
    : null\n }\n \n
    \n \n \n
    \n \n
    \n \n \n
    \n {\n msg ?\n
    \n {msg}\n
    : null\n }\n \n
    \n \n
    \n
    \n \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\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 //flexBasis: ['145px', '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};\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 { css } from '@emotion/core'\nimport { mq } from 'cssInJs'\n\nexport default {\n sliderAdPanel: css({\n marginTop: '20px',\n marginBottom: '20px',\n backgroundColor: 'transparent',\n overflow:'hidden',\n '& .slick-prev:before, .slick-next:before': {\n color: 'black',\n display:'none'\n },\n '& .slick-next': {\n right: '-2%'\n },\n '& .slick-prev': {\n left: '-2%'\n }\n }),\n sliderImageWrapper: {\n height: '100%'\n },\n sliderImageWrapper2: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 5px',\n flexDirection: 'column',\n //margin: 'auto',\n //maxWidth: '500px'\n },\n // sliderImage: css({\n // //width: 'auto !important',\n // //height:'100% !important',\n // //display: 'block !important',\n // margin: 'auto',\n // //maxHeight: '180px'\n // })\n sliderImage : mq({\n margin: 'auto',\n width: ['100%','unset']\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport Slider from \"react-slick\";\nimport utils from '../../../utils';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport { SiteLink } from '../../../components';\nimport { useMemo } from 'react';\n\nexport function SliderAdPanel(props) {\n const item = props.item;\n //console.log('item', item);\n //const defaultDesH = 220;\n const subItems = item.items || [];\n //console.log(subItems.length);\n\n const shuffledSubItems = useMemo(() => {\n const shuffled = JSON.parse(JSON.stringify(subItems));\n var currentIndex = shuffled.length, temporaryValue, randomIndex;\n while(0 !== currentIndex){\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n temporaryValue = shuffled[currentIndex];\n shuffled[currentIndex] = shuffled[randomIndex];\n shuffled[randomIndex] = temporaryValue;\n }\n\n //console.log(\"1\", shuffled);\n return shuffled;\n\n // eslint-disable-next-line\n }, []);\n \n const cmsOption = props.cmsOption || {};\n const cssClass = utils.classNames('cms_item', 'sliderAdPanel', item.cssClass || item.anchorName || '');\n\n function sendEventToGa(item){\n window.dataLayer.push(Object.assign({ event: 'AdEvent' }, {\n 'eventCategory' : item.eCategory,\n 'eventAction' : item.eAction,\n 'eventLabel' : item.eLabel,\n 'eventValue' : item.eValue,\n }));\n }\n \n const sliderAdItems = shuffledSubItems.map((subItem, index) => {\n\n const imageUrl = cmsUtils.payload(subItem, 'ImageUrl');\n const imageUrl2 = cmsUtils.payload(subItem, 'ImageUrl2');\n const bottomText = cmsUtils.payload(subItem, 'BottomText');\n const linkUrl = cmsUtils.payload(subItem, 'LinkUrl');\n const currentImageUrl = window.innerWidth <= 600 ? imageUrl2 : imageUrl;\n const eTracking = cmsUtils.payload(subItem, 'Event_tracking');\n\n return (\n
    \n {\n (linkUrl && linkUrl !== '') ? \n \n
    {\n\n const data = { \n eCategory : cmsUtils.payload(subItem, 'Event_category'),\n eAction : cmsUtils.payload(subItem, 'Event_action'),\n eLabel : cmsUtils.payload(subItem, 'Event_label'),\n eValue : cmsUtils.payload(subItem, 'Event_value')\n }\n sendEventToGa(data);\n } : null}> \n {'sliderimage-'\n
    {bottomText}
    \n
    \n
    : \n \n
    \n {'sliderimage-'\n
    {bottomText}
    \n
    \n }\n
    \n )\n }\n );\n\n var numOfSlides = (maxNum) => subItems.length >= maxNum ? maxNum : subItems.length\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n ////fade: true,\n autoplay: true,\n slidesToShow: numOfSlides(1),\n //slidesToShow: 3,\n slidesToScroll: numOfSlides(1),\n // responsive: [\n // { breakpoint: 1024, settings: { slidesToShow: numOfSlides(5), slidesToScroll: numOfSlides(1) } },\n // { breakpoint: 992, settings: { slidesToShow: numOfSlides(4), slidesToScroll: numOfSlides(1) } },\n // { breakpoint: 768, settings: { slidesToShow: numOfSlides(3), slidesToScroll: numOfSlides(1) } },\n // { breakpoint: 576, settings: { slidesToShow: numOfSlides(2), slidesToScroll: numOfSlides(1)} }\n // ]\n };\n\n return (\n
    \n \n {sliderAdItems}\n \n
    \n );\n}","/** @jsx jsx */\nimport { jsx } from \"@emotion/core\";\nimport React from \"react\";\nimport env from \"../../../../env\";\nimport { usePost, Button, ErrorMessage } from \"../../../../components\";\nimport { useForm } from \"../../../../form\";\nimport { getSignupFormModel } from \"./signupFormModel\";\nimport cmsUtils from \"cms/utils/cmsUtils\";\nimport utils from \"utils\";\nimport { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nfunction Portal({ children }) {\n const [el] = useState(document.createElement(\"div\"));\n useEffect(() => {\n let mount = document.getElementById(\"portal-root\");\n mount.appendChild(el);\n return () => mount.removeChild(el);\n }, [el]);\n return createPortal(children, el);\n}\n\nexport function SignupForm(props) {\n const item = props.item;\n // const emailReceiver = cmsUtils.payload(item, \"EmailReceiver\");\n const emailReceiver = props.emailReceiver;\n\n const boxTitle = cmsUtils.payload(item, \"Title\");\n const boxSubTitle = cmsUtils.payload(item, \"SubTitle\");\n const backgroundImg = cmsUtils.payload(item, \"ImageUrl\");\n const [modalOpen, setModalOpen] = useState(false);\n useEffect(() => {\n const timer = setTimeout(() => {\n setModalOpen(true);\n }, 3000);\n return () => clearTimeout(timer);\n }, []);\n const model = getSignupFormModel({});\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 // var files = form.getFiles();\n // var formData = new FormData();\n // formData.append(\"jsonData\", JSON.stringify(value));\n // files.forEach((file) => {\n // (file.files || []).forEach((uploadFile) => {\n // formData.append(file.name, uploadFile);\n // });\n // });\n // post.sendFormData(env.apiBase + \"/api/signup/send\", formData);\n post.send(env.apiBase + \"/api/signup/send\", value);\n setSendingStatus(\"pending\");\n });\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 {modalOpen && (\n \n {modalOpen && (\n
    \n \n
    \n setModalOpen(false)}\n >\n \n \n \n
    \n
    \n logo\n

    {boxTitle}

    \n

    {boxSubTitle}

    \n
    \n
    \n
    {render(\"name\")}
    \n
    \n
    \n
    {render(\"email\")}
    \n
    \n
    \n
    \n
    \n \n \n \n {post.done() && (\n \n Successfully sent!\n \n )}\n
    \n
    \n
    \n

    *Unsubscribe anytime.

    \n

    \n By continuing, I agree to SA-Parks's{\" \"}\n Privacy Policy\n

    \n
    \n \n
    \n )}\n \n )}\n \n );\n}\n","import { fb, validators } from \"../../../../lib/form\";\n\nexport function getSignupFormModel(data) {\n const model = fb.group({\n name: [\n data.name || \"\",\n [validators.Required()],\n { label: \"Full Name\", type: \"text\" },\n ],\n email: [\n data.email || \"\",\n [validators.Required(), validators.Email()],\n { label: \"Email\", type: \"email\" },\n ],\n });\n\n return model;\n}\n","import React from \"react\";\nimport { BannerPanel } from \"cms/items/bannerPanel/view\";\nimport { BannerItem } from \"cms/items/bannerItem/view\";\nimport { Panel } from \"cms/items/panel/view\";\nimport { Html } from \"cms/items/html/view\";\nimport { TestimonialPanel } from \"cms/items/testimonialPanel/view\";\nimport { TestimonialItem } from \"cms/items/testimonialItem/view\";\nimport { ImagePanel } from \"cms/items/imagePanel/view\";\nimport { PageTiles } from \"cms/items/pageTiles/view\";\nimport { SingleBanner } from \"cms/items/singleBanner/view\";\nimport { ContactForm } from \"cms/items/contactForm/view\";\nimport { YoutubeBannerPanel } from \"cms/items/youtubeBannerPanel/view\";\nimport { Code } from \"cms/items/code/view\";\nimport { BlogPosts } from \"cms/items/blogPosts/view\";\nimport { BlogPostTitle } from \"cms/items/blogPostTitle/view\";\nimport { MultiColumnPanel } from \"components/multiColumnPanel/view\";\nimport { NonAtdwPageInfoBar } from \"components/NonAtdwPageInfoBar/view\";\nimport { Login } from \"components/login/view\";\nimport { ChangeDetails } from \"components/changeDetails/view\";\nimport { PhotoGallery } from \"components/photoGallery/view\";\nimport { SliderAdPanel } from \"components/SliderAd/index\";\nimport { SignupForm } from \"cms/items/signupForm/view/signupForm\";\nimport {\n AtdwSearch,\n AtdwSearchV2,\n AtdwMap,\n MixedListings,\n} from \"site/atdw/index\";\n\nexport function Item(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n //console.log('item', item, subItems, cmsOption);\n let itemElt = <>;\n if (item.itemTypeCode === \"Panel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Html\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"BannerPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"BannerItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"TestimonialPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"TestimonialItem\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ImagePanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PageTiles\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"SingleBanner\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ContactForm\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"YoutubeBannerPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Code\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Blog-Posts\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"Blog-PostTitle\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"MultiColumnPanel\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"AtdwSearch\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"AtdwSearchV2\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"AtdwMap\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"NonAtdwPageInfoBar\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"MemberLogin\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"ChangeDetails\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"MixedListings\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"PhotoGallery\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"SliderAdPanel2\") {\n itemElt = ;\n } else if (item.itemTypeCode === \"SignupForm\") {\n itemElt = ;\n } else {\n itemElt =
    {item.itemTypeCode}
    ;\n }\n // const subItemsElts = subItems.map((subItem, index) =>\n // \n // );\n return (\n <>\n {itemElt}\n {/* {subItemsElts} */}\n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useRouter } from 'components';\nimport { useGet } from 'components';\nimport { Item } from 'cms/items/item';\nimport { NotFound } from 'components';\nimport env from 'env';\nimport { useStore } from \"store/storeProvider\";\nimport { ErrorPopup, Loading } from 'components';\nimport { useInstagram } from 'components';\nimport { useAuth } from '../../../auth/index';\nimport cmsUtils from '../../utils/cmsUtils';\nimport { Redirect } from \"react-router-dom\";\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 [page, setPage] = useState(null);\n //const path = usePath();\n //log('view page', path);\n \n //const { pathname } = useRouter();\n\n const router = useRouter();\n //const { pathname } = router;\n const { pathname, Redirect } = router;\n\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 if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.isLoading());\n log('1. viewpage component', pageLoaded, get.response);\n \n const pageData = get.response.data;\n const menuData = get.response.menu;\n const redirectTo = get.response.redirectTo;\n const cmsOption = {};\n \n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n //dispatch({ type: 'SET_STATE', payload: { page: pageData, menu: menuData } })\n dispatch({ type: 'SET_PAGE', payload: pageData });\n dispatch({ type: 'SET_MENU', payload: menuData });\n dispatch({type:'SET_STATE', payload : {preParkName : \"\" }});\n document.title = pageData.pageTitle;\n gtm.pageView(pathname, pageData.pageTitle);\n return null;\n } else if (redirectTo) {\n return \n } else if (!pageData) {\n return ()\n }\n \n log('3. call rendering memo')\n return ;\n}\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n const _auth = useAuth();\n const [pageLoading, setPageLoading] = useState(true);\n const [checkAuthSession, setCheckAuthSession] = useState(0);\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption)\n\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
    \n )\n }\n );\n\n const pageType = cmsUtils.payload(pageData, \"PageType\") || \"public\";\n useEffect(()=> {\n if(pageType === \"public\"){\n setPageLoading(false);\n return;\n }\n else if(pageType === \"member\"){\n if(_auth.session && !_auth.session.expired()){\n setPageLoading(false);\n }\n else{\n if(checkAuthSession >= 2 ){\n setPageLoading(false);\n return;\n }\n setTimeout(() => {\n setCheckAuthSession(checkAuthSession + 1); \n }, 1500);\n }\n }\n }, [_auth.session, checkAuthSession, pageType]);\n\n return (\n pageLoading ? : (checkAuthSession === 2 ? :\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 const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \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 window.parent.postMessage({\n action: action,\n data: cloned\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 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 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 'cms/items/item';\nimport env from 'env';\nimport { loadJs } from 'lib/net-loader';\nimport { CmsPageController } from 'cms/services/cms-page-controller';\nimport { ErrorPopup } 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
    Loading...
    \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 from 'react';\nimport { useRouter } from 'components';\n\nexport function SearchBar({onCloseMenu}) {\n const [keyword, setKeyword ] = React.useState('')\n const { navigate } = useRouter();\n function search(e) {\n e.preventDefault();\n onCloseMenu();\n navigate('/search-results?q=' + encodeURIComponent(keyword))\n }\n function onChange(e) {\n setKeyword(e.target.value);\n }\n \n return (\n
    search(e)}>\n \n \"search\"/\n
    );\n}","import React, {useState, useEffect} from 'react';\nimport { SiteLink } from 'components';\nimport { useStore } from \"store\";\n\nimport { FaChevronDown } from 'react-icons/fa';\nimport { SearchBar } from './searchBar';\nimport { useAuth } from '../../auth/index';\n\nexport function NavBar(props) {\n const open = props.open;\n const currentLocation = props.currentLocation;\n const { state } = useStore();\n\n const _useAusth = useAuth();\n\n const menu = state.menu || { items: [] };\n const depth = 1;\n const menuItemElts = menu.items.map((item, index) =>\n \n );\n return (\n
    \n \n
    \n \n
    \n
    \n \"menu_image\"/\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 _useAusth = props._useAusth;\n\n const subItemsElts = subItems.length > 0? subItems.map((subItem, index) =>\n \n ) : null;\n\n\n useEffect(() => {\n //console.log('navbar', currentLocation);\n setSubMenuOpened(false);\n }, [currentLocation])\n\n function closeMenu() {\n props.onCloseMenu();\n }\n\n function toggleSubmenu(e) {\n e.preventDefault();\n e.stopPropagation();\n setSubMenuOpened(!subMenuOpened);\n }\n \n return (\n item.title === 'MEMBERS HOME' ? (\n _useAusth.session && !_useAusth.session.expired() ?\n
  • \n closeMenu()}>\n {item.title}\n {subItemsElts && toggleSubmenu(e)}>}\n \n {subItemsElts &&\n
      \n {subItemsElts}\n
    }\n
  • : null\n ) : item.title === 'MEMBERS' && (_useAusth.session && !_useAusth.session.expired()) ? \n null :\n
  • \n closeMenu()}>\n {item.title}\n {subItemsElts && toggleSubmenu(e)}>}\n \n {subItemsElts &&\n
      \n {subItemsElts}\n
    }\n
  • \n )\n}\n\nfunction SubMenuItem(props) {\n const item = props.item;\n function closeMenu() {\n props.onCloseMenu();\n }\n\n return (\n
  • \n closeMenu()}>\n {item.title}\n \n
  • \n )\n}","import React, { useState, useEffect } from 'react';\nimport { useRouter } from 'components';\n//import { navigate, usePath, useLocationChange } from 'raviger';\nimport { SiteLink } from 'components';\nimport { NavBar } from './navBar';\nimport { FaAngleLeft } from 'react-icons/fa';\nimport { useHistory } from 'components';\nimport utils from 'utils';\n\nexport function TopHeader(props) {\n\n const { path } = useRouter();\n //const path = usePath();\n const [menuOpened, setMenuOpened] = useState(false);\n const [currentLocation, setCurrentLocation] = useState(path);\n const [scrolled, setScrolled] = useState(false);\n\n //const [scrolled, setScrolled] = useState(false)\n // const history = useHistory();\n // console.log(history.length, history)\n\n const history = useHistory(path);\n\n const routeChanged = (path, history) => {\n //console.log(path, history);\n //console.log(window.location.hash)\n const hash = window.location.hash;\n //const search = window.location.search;\n //console.log(\"aaa\", search);\n history.push(path)\n if (hash) { scrollTo(); }\n }\n\n useEffect(() => {\n scrollTo();\n if(window.scrollY >= 100){\n setScrolled(true);\n }\n let p = 0;\n window.addEventListener('scroll', function(){\n if(window.scrollY >= 100 ){\n setScrolled(true);\n }\n else{\n setScrolled(false);\n }\n\n let item = document.getElementById(\"atdwpagebanericonsbar\");\n if(item){\n if(p === 0){\n p = item.offsetTop;\n }\n\n if(window.innerwidth <= 500){\n if((p - window.scrollY) <= 70){\n item.classList.add(\"dock\");\n }\n else{\n item.classList.remove(\"dock\");\n }\n }\n else{\n if((p - window.scrollY) <= 56){\n item.classList.add(\"dock\");\n }\n else{\n item.classList.remove(\"dock\");\n }\n }\n }\n });\n }, []);\n\n //const pageChanged = useCallback(path => routeChanged(path, history), [history])\n // useLocationChange(path => {\n // routeChanged(path, history);\n // setCurrentLocation(path);\n // })\n\n useEffect(() => {\n routeChanged(path, history);\n setCurrentLocation(path);\n // eslint-disable-next-line\n }, [path]);\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 //document.getElementsByTagName('html')[0].style.backgroundColor = 'red';\n if(!menuOpened){\n //document.getElementsByTagName('html')[0].style.overflow = 'hidden';\n //document.getElementsByTagName('html')[0].style.overflow = 'hidden';\n //document.getElementsByTagName('html')[0].style.marginRight = '17px';\n }\n else{\n //document.getElementsByTagName('html')[0].style.overflow = '';\n //document.getElementsByTagName('html')[0].style.marginRight = '';\n }\n setMenuOpened(!menuOpened);\n }\n\n function onCloseMenu() {\n //document.getElementsByTagName('html')[0].style.overflow = '';\n //document.getElementsByTagName('html')[0].style.marginRight = '';\n setMenuOpened(false);\n }\n \n function goBack(e) {\n console.log(\"goBack\");\n //e.preventDefault();\n history.getPrevious();\n //console.log(previousLink)\n }\n\n return (\n <>\n
    \n
    \n {\n history.history.length > 1 && \n \n BACK\n \n } \n {/*
    */}\n \n \n {/* \"logo\" */}\n \"logo\"\n \n\n \n\n \n
    \n \n );\n}","import React from 'react';\nimport { useRouter } from 'components';\nimport { SiteLink } from 'components';\nimport { useAuth } from '../../auth/index';\n//import BottomDrawer from 'components/bottomDrawer'\n\nexport function BottomDock(props) {\n \n const _useAusth = useAuth();\n \n const links = [\n { url: '/parks-and-resorts', title: 'PARKS' },\n { url: '/residential-park-living', title: 'LIVING' },\n { url: '/touring-hints', title: 'TOURING HINTS' },\n { url: (_useAusth.session && !_useAusth.session.expired()) ? '/members' : '/members-login', title: 'MEMBERS' },\n { url: '/guide', title: 'GUIDE' }\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 BottomSlider(bottomMenu.current);\n // setTimeout(() => slider.init(), 1000)\n // }, [])\n\n return (\n <>\n {/* ref={bottomMenu} */}\n \n {/*
    */}\n \n \n );\n}\n","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\nexport default{\n formContainer : css({\n maxWidth:'550px',\n margin: 'auto',\n padding: '1rem 0px'\n }),\n textContainer : css({\n marginBottom:'1rem'\n }),\n buttonStyle : css({\n width: '100%'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport { SiteLink } from 'components';\nimport { useState, useEffect } from 'react';\nimport env from 'env';\n\nexport function ForgotPassword(props){\n const [email, setEmail] = useState(\"\");\n const [msg, setMsg] = useState(`By clicking \"Reset Password\" we will send a password reset link`);\n const [buttonTrigger, setButtonTrigger] = useState(0);\n\n //const post = usePost();\n function onSubmit(e) {\n e.preventDefault(); \n e.stopPropagation();\n setButtonTrigger(buttonTrigger + 1);\n //post.send(env.apiBase + '/api/profile/sendpasswordresetemail', {email : email} );\n }\n\n useEffect(() => {\n if(buttonTrigger === 0){\n return;\n }\n const fetchData = async () => {\n const res = await fetch(env.apiBase + '/api/profile/sendpasswordresetemail', {\n method : 'post',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({email : email})\n });\n const data = await res.json();\n let msg = \"Password reset email sent, check your inbox.\"\n if(data.errors.length > 0){\n msg = data.errors[0].errorMessage;\n }\n setMsg(msg);\n }\n fetchData();\n setButtonTrigger(0);\n }, [buttonTrigger, email]);\n\n return(\n
    \n

    Reset Password

    \n
    \n \n {\n setEmail(e.target.value);\n }} value={email} />\n
    \n
    \n {msg}\n
    \n
    \n \n
    \n \n Go back to Log in?\n \n
    \n )\n}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\nexport default{\n formContainer : css({\n maxWidth:'550px',\n margin: 'auto',\n padding: '1rem 0px'\n }),\n textContainer : css({\n marginBottom:'1rem'\n }),\n buttonStyle : css({\n width: '100%'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport { SiteLink, useRouter } from 'components';\nimport { useState, useEffect } from 'react';\nimport env from 'env';\nimport { Redirect } from 'react-router-dom';\nimport { Loading } from 'components';\n\nexport function ResetPassword(props){\n const [password, setPassword] = useState(\"\");\n const [buttonTrigger, setButtonTrigger] = useState(0);\n const { query } = useRouter();\n const [msg, setMsg] = useState();\n const [redirect, setRedirect] = useState(false);\n const [pageLoading, setPageLoading] = useState(false);\n\n const token = query.u;\n\n function onSubmit(e) {\n e.preventDefault(); \n e.stopPropagation();\n setPageLoading(true);\n setButtonTrigger(buttonTrigger + 1);\n }\n\n useEffect(() => {\n if(buttonTrigger === 0){\n return;\n }\n const fetchData = async () => {\n const res = await fetch(env.apiBase + '/api/profile/resetpassword', {\n method : 'post',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({password: password, token: token})\n });\n const data = await res.json();\n if(data.errors.length > 0){\n setMsg(data.errors[0].errorMessage);\n }\n else{\n setTimeout(() => {\n setRedirect(true); \n }, 1000);\n }\n setPageLoading(false);\n }\n fetchData();\n setButtonTrigger(0);\n }, [buttonTrigger, token, password]);\n\n return( \n pageLoading ? : \n
    \n

    Reset Password

    \n
    \n \n {\n setPassword(e.target.value);\n }} value={password} />\n
    \n\n {\n msg ?
    \n {msg}\n
    : null\n }\n \n
    \n \n
    \n \n Go back to Log in?\n \n {\n redirect ? : null\n }\n
    \n )\n}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default {\n formContainer : css({\n maxWidth:'550px',\n margin: 'auto',\n padding: '1rem'\n })\n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport style from './style';\nimport { useState, useEffect, Fragment } from 'react';\nimport env from 'env';\nimport { Redirect } from 'react-router-dom';\nimport { Loading } from 'components';\n\nexport function Register(props){\n\n const [info, setInfo] = useState({\n organisation : '',\n name : '',\n password : '',\n passwordClue : '',\n email : '',\n check : false\n });\n const [buttonTrigger, setButtonTrigger] = useState(0);\n const [msg, setMsg] = useState();\n const [redirect, setRedirect] = useState(false);\n const [pageLoading, setPageLoading] = useState(false);\n\n function onSubmit(e) {\n e.preventDefault(); \n e.stopPropagation();\n\n if(!info.check){\n setMsg(\"Please check box\");\n return;\n }\n setButtonTrigger(buttonTrigger + 1);\n setPageLoading(true);\n }\n\n const handChange = (el => {\n const elName = el.target.name;\n const elValue =el.target.value;\n setInfo({...info, [elName] : elValue});\n });\n\n useEffect(() => {\n if(buttonTrigger === 0){\n return;\n }\n const fetchData = async () => {\n const res = await fetch(env.apiBase + '/api/profile/Register', {\n method : 'post',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(info)\n });\n const data = await res.json();\n if(data.errors.length > 0){\n setMsg(data.errors[0].errorMessage);\n }\n else{\n setRedirect(true);\n }\n setPageLoading(false);\n }\n fetchData();\n setButtonTrigger(0);\n }, [buttonTrigger, info]);\n\n return(\n pageLoading ? :\n \n

    Register now to access the Members area

    \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 handChange({target : {name : \"check\", value : e.target.checked}});\n }} checked={info.check} />\n \n
    \n\n {\n msg ?\n
    \n {msg}\n
    : null\n }\n\n {\n redirect ? : null\n }\n\n
    \n \n
    \n
    \n
    \n ) \n}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Switch, Route, Redirect } from 'react-router-dom';\nimport { Fragment } from 'react';\nimport { ForgotPassword } from '../forgotPassword/view';\nimport { ResetPassword } from '../resetPassword/view';\nimport { ViewPartial } from 'cms/pages/partials/viewPartial';\nimport { Register } from '../register/view';\n\nexport function SiteAuthLayout(props){\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}","import React, {useState, useEffect } from 'react';\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { useRouter } from 'components';\nimport { StoreProvider } from 'store/storeProvider';\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 { AtdwPage, AtdwContext, ServicePage } from 'site/atdw/index';\nimport { ProvideAuth } from 'auth';\nimport { HelmetProvider } from 'react-helmet-async';\n//import { MemberPageLayout } from 'site/member/index';\nimport { SiteAuthLayout } from 'site/siteAuth/index';\nimport { useStore } from \"store/storeProvider\";\n\nfunction PageUpdated() {\n const { path } = useRouter();\n const parallax = useParallax();\n\n React.useLayoutEffect(() => {\n window.scrollTo(0, 0);\n parallax.reset();\n\n //document.getElementById(\"root\").focus();\n\n // eslint-disable-next-line\n }, [path]);\n\n return null;\n}\n\nfunction AppLayout(props) {\n const { pathname } = useRouter();\n const { dispatch } = useStore();\n\n //const [scrolled, setScrolled] = useState(false)\n //const path = usePath();\n //const routeResult = useRoutes(routes);\n\n // const parallax = useParallax();\n // //console.log(path, routeResult);\n // const routeChanged = (path) => {\n // //console.log(path);\n // parallax.reset();\n // }\n\n useScrollPosition(({ prevPos, currPos }) => {\n //console.log(currPos.x)\n //console.log(currPos.y);\n if (currPos.y > 90) {\n document.querySelector('body').classList.add('scrolled')\n } else {\n document.querySelector('body').classList.remove('scrolled')\n }\n //setScrolled(currPos.y > 90)\n }, [], null, true)\n\n //const pageChanged = useCallback(path => routeChanged(path), [])\n //useLocationChange((path) => { routeChanged(path, history)})\n //useLocationChange(path => routeChanged(path))\n\n useEffect(() => {\n const googleMapScript = document.getElementById('googleMapScript');\n if(!googleMapScript){\n const _googleMapScript = document.createElement('script');\n _googleMapScript.src = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyDdeE10fagsW-TTheuB3W-kGvkVTFe3NyY\";\n _googleMapScript.id = \"googleMapScript\";\n _googleMapScript.async = true;\n _googleMapScript.defer = true;\n \n document.body.appendChild(_googleMapScript);\n }\n }, []);\n\n useEffect(() => {\n const _hash = window.location.hash;\n //console.log(\"pathname-\", pathname, _hash);\n\n if(pathname === '/guide' && _hash === '#contact'){\n dispatch({type:'SET_STATE', payload : {enquiryType : \"orderCaravanCampingGuide\" }});\n }\n else{\n dispatch({type:'SET_STATE', payload : {enquiryType : \"\" }});\n }\n // eslint-disable-next-line\n }, [pathname]);\n\n if(pathname === '/ccia-suppliers'){\n return ;\n }\n\n return (\n
    \n \n \n
    \n
    \n \n } />\n } />\n \n \n \n \n \n \n }/>\n }/>\n {/* }/> */}\n }/>\n \n \n \n \n\n \n
    \n {/* */}\n
    \n {/*
    */}\n \n \n
    \n );\n}\n\nfunction App() {\n \n const [atdwDataHistory, setAtdwDataHistory] = useState(null);\n const [atdwDataHistory2, setAtdwDataHistory2] = useState(null);\n const [atdwTxaCheckInDate, setAtdwTxaCheckInDate] = useState(null);\n\n function setupAtdwDataHistory(value){\n console.log(\"setupAtdwDataHistory\");\n setAtdwDataHistory(value);\n }\n\n function setupAtdwDataHistory2(value){\n console.log(\"setupAtdwDataHistory2\");\n setAtdwDataHistory2(value);\n }\n\n function setupAtdwTxaCheckInDate(value){\n console.log(\"atdwTxaCheckInDate\");\n setAtdwTxaCheckInDate(value);\n }\n \n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\nexport default App;","// 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 \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';\n\nReactDOM.render(, document.getElementById('root'));\n\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":""}