{"version":3,"sources":["lib/polyfill-ie/index.js","components/notFound/notFound.js","env.js","lib/app-version/index.js","components/form/buttons/button.js","lib/ui-error/errorMessage.js","lib/ui-error/errorPopup.js","lib/icons-svg/icons/NarrowRight.js","cssInJs/variables.js","config.js","lib/icons-svg/icons/Loading--circle.js","lib/ui-loading-v2/sectionLoading.js","lib/utils-core/url.js","lib/utils-core/form.js","lib/utils-core/array.js","lib/utils-core/date.js","lib/utils-core/css.js","lib/utils-core/ui.js","lib/utils-core/money.js","lib/utils-core/text.js","lib/utils-core/random.js","lib/utils-core/object.js","lib/utils-core/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","lib/store/reducers.js","lib/store/storeProvider.js","lib/router/handleLink.js","lib/css-emotion/variables.js","lib/css-emotion/breakpoints.js","lib/css-emotion/mixin.js","site/atdw/searchOption/style.js","site/atdw/searchOption/view.js","site/atdw/searchResult/style.js","site/atdw/tile/style.js","site/atdw/tile/view.js","site/atdw/searchResult/view.js","cms/utils/cmsUtils.js","site/atdw/search/view.js","site/atdw/page/style.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","components/pageTileJ5/style.js","components/pageTileJ5/view.js","components/tiles/bsyc/style.js","components/tiles/bsyc/view.js","cms/items/singleBanner/view.js","lib/form/formModelHelper.js","lib/form/formBuilder.js","lib/form/validatorHelper.js","lib/form/validators/required.js","lib/form/validators/email.js","lib/form/validators/date.js","lib/form/validators/length.js","lib/form/validators.js","lib/form/formRenderHelper.js","lib/form/components/ValidationAlert.js","lib/form/controls/TextInput.js","lib/form/controls/RadioListInput.js","lib/form/controls/CheckboxListInput.js","lib/form/controls/DateSeparateInput.js","lib/form/controls/FileInput.js","lib/form/controls/index.js","lib/form/controls/TextareaInput.js","lib/form/controls/CheckboxInput.js","lib/form/controls/SelectInput.js","lib/form/controls/HiddenInput.js","lib/form/controlRenderer.js","lib/form/formValidate.js","lib/form/useForm.js","lib/tracking/gtm.js","cms/items/contactForm/contactForm.js","cms/items/contactForm/contactFormModel.js","cms/items/contactForm/view.js","lib/utils-core/debounce.js","lib/youtube/iframeApi.js","lib/youtube/youtubeBanner--mobilePopup.js","cms/items/youtubeBannerPanel2/view.js","cms/items/youtubeEmbedded/view.js","site/searchResult/searchResult.js","cms/items/code/view.js","cms/items/blogPosts/view.js","cms/items/blogPostTitle/view.js","cms/items/multiColumnPanel/view.js","cms/items/expandableHtml/view.js","components/photoGallery/style.js","components/photoGallery/view.js","cms/items/item.js","cms/pages/partials/viewPartial.js","cms/pages/partials/atdwPagePartial.js","site/atdw/page/view.js","site/atdw/util/AtdwContext.js","site/atdw/map/style.js","site/atdw/map/view.js","site/atdw/searchResultWithSite/style.js","site/atdw/searchResultWithSite/view.js","components/router/siteLink.js","lib/instagram-feed/feedStyle.js","lib/instagram-feed/feed.js","lib/youtube/youtubeEmbed.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","layout/popup/commonVideoPopup.js","App.js","serviceWorker.js","index.js"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","NotFound","props","debugInfo","className","href","onClick","e","preventDefault","window","location","reload","refreshPage","history","back","goBack","style","marginTop","color","fontSize","pageUrl","loadFrom","config","isProd","process","locale","getLocale","siteName","titleSuffix","apiBase","resourceBase","cmsEndpoint","ver","updateDate","bvClientId","bvSiteId","bvEnv","bvLocale","REACT_APP_COUNTRY_LOCALE","hostname","toLowerCase","indexOf","search","getCountry","console","log","AppVersion","React","useState","checkStatus","setCheckStatus","env","useEffect","updateSW","then","timer","setTimeout","clearTimeout","button","type","AppVersionPage","margin","width","Button","status","children","btnStyle","buttonStyle","disabled","role","aria-hidden","ErrorMessage","errors","summaryMessage","length","message","Array","isArray","map","error","index","key","ErrorPopup","title","messages","push","css","position","padding","maxWidth","maxHeight","background","top","left","transform","zIndex","inx","dangerouslySetInnerHTML","__html","SvgNarrowRight","variables","familyBase","familyHeader","primaryColor","fontColor","bgColor","themeDefaultColor","themeRedColor","themeOrangeColor","themeGreenColor","themeBlueColor","themeYellowColor","themePurpleColor","themeGreyColor","breakpointNames","breakpoints","cssEmotion","iconColors","primary","secondary","secondaryColor","siteConfig","SvgLoading","height","viewBox","preserveAspectRatio","cx","cy","r","fill","stroke","strokeWidth","attributeName","repeatCount","dur","values","keyTimes","keySplines","calcMode","begin","Loading","loaded","setLoaded","loading","minHeight","display","justifyContent","alignItems","opacity","transition","isExternalLink","link","getLinkFromElement","linkEl","getAttribute","getLinkInfo","origin","currentPath","pathname","linkFiltered","replace","linkLower","isExternal","isHash","isTel","isMailTo","url","path","i","exts","isStaticFile","ext","getExtension","filename","split","pop","getFilename","getFolderPath","parentDepth","slice","join","toQueryString","params","Object","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","formatYYYYMMDD","dateObj","toDate","dd","mm","getMonth","yyyy","getFullYear","formatDDMMYYYY","parseDate","parseISO","toDateTime","dateStr","format","parse","isValidDate","d","bgUrl","imageUrl","encodeURI","decodeURI","bgUrlStyle","screenWidth","innerWidth","document","documentElement","clientWidth","body","screenHeight","innerHeight","clientHeight","outerWidth","offsetWidth","outerHeight","offsetHeight","hasClass","classList","match","RegExp","addClass","add","removeClass","remove","reg","toggleClass","scrollTo","selector","duration","delay","findElement","offset","elementOffset","gsap","to","ease","querySelectorOrNull","querySelector","rect","getBoundingClientRect","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElementInViewport","bottom","right","getCurrentBreakpoint","bpHolder","getComputedStyle","getPropertyValue","formatMoney","number","fraction","formatter","Intl","NumberFormat","currency","minimumFractionDigits","toMonthlyCost","amount","frequency","isBlank","str","test","isEmpty","isNumeric","num","capitalize","expression","charAt","toUpperCase","toFieldName","trim","toHtml","truncateWords","maxLen","separator","ellipsis","pos","lastIndexOf","substr","numberWithCommas","parts","toString","registerPlugin","ScrollToPlugin","formatNumber","Math","round","toTelephoneNumber","like","shortId","shortid","guid","uuid","toCamel","o","newO","origKey","newKey","hasOwnProperty","constructor","getImageSetPath","setId","info","getPathDetails","baseFolder","setIds","lastFolder","classNames","form","ui","money","random","object","media","isMobile","utils","resourcePath","isNZ","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","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","mq","facepaint","bp","mqMin","mqMax","mediaQuery","matchMedia","isMin","isMax","overlay","atdwSearchOption","marginBottom","boxShadow","search_btn","dateFormat","dateFormatPlus2","AtdwSearchOption","atdwType","numOfAdultsOption","label","numOfKidsOption","checkIn","checkOut","numOfAdults","numOfKids","subType","town","searchOptionValue","setSearchOptionValue","today","checkInMinDate","checkOutMinDate","setCheckOutMinDate","typeOptions","bookingAble","dateAble","items","handChange","elName","target","elValue","onSubmit","event","onGetSearchOption","htmlFor","placeholder","isMulti","closeMenuOnSelect","noOptionsMessage","onChange","val","autoComplete","atdwTiles","flexWrap","atdwTile","flexGrow","flexShrink","flexBasis","backgroundColor","textDecoration","border","bg","paddingTop","backgroundPosition","fontWeight","lineHeight","descContainer","paddingBottom","desc","shotDesc","textOverflow","WebkitLineClamp","WebkitBoxOrient","overflow","AtdwTile","product","_atdwContext","AtdwContext","id","productId","slug","setupAtdwDataHistory2","backgroundImage","productName","additionalData","PRODUCTTYPES","productTypeDescription","shortDesc","AtdwSearchResult","atdwDatas","atdwData","defaultVal","payloads","AtdwSearchTitle","sTitle","AtdwSearch","cmsOption","cssClass","anchorName","cmsUtils","backgroundTile","atdwDataFromDB","reserveAtdwData","towns","trigger","context","atdwState","setAtdwState","setTrigger","setCheckIn","setCheckOut","setNumOfAdults","setNumOfKids","atdwDataHistory2","pre","_new","atdwDataHistory","getElementById","scrollIntoView","behavior","block","_data","products","tows","setupAtdwDataHistory","sendData","adults","kids","txaList","externalSystems","externalSystemCode","externalSystemText","r_data","n","includes","addAtdw","useCallback","av","data-cms-item-id","isCmsEdit","itemId","_checkIn","_checkOut","_numOfAdults","_numOfKids","_filteredData","filter","returnResult","productTypeId","eventFrequency","fDate","tDate","pFDate","frequencyStartDate","pTDate","frequencyEndDate","marginLeft","marginRight","textAlign","tileSize","banerIconsBar","flexDirection","cursor","cityName","detailContainer","borderTop","borderBottom","atdwLoaction__click","BannerPanel","subItems","heightSet","slides","subItem","Item","bannerPanel","useRef","dots","infinite","autoplaySpeed","fade","autoplay","slidesToShow","slidesToScroll","afterChange","$currentPosition","current","ref","BannerItem","captionTitle","linkUrl","caption","titlePanel","Panel","bgTheme","subItemsElts","Html","htmlBlock","buttons","restructureButton","data-cms-html","processed","stopPropagation","handleClick","span","innerHTML","TestimonialPanel","itemElt","itemTypeCode","TestimonialItem","bottomText","ImagePanel","cssClass2","data-pxh","pageTiles","useSliderpageTiles","tile__content","tile__bg","objectFit","tile__details","tile__details__wrapper","tile__details__title","tile__details__desc","Tile","disableLink","colorTheme","alt","pageTitle","tileDesc","PageTileJ5","pagesSerialized","pages","useSlider","pageTileElts","idx","responsive","breakpoint","pageTile__tile","flex","order","tile__flip__wrapper","tile__bg2","backgroundRepeat","fontFamily","PageTilesBsyc","getPages","data-aos","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","createValidator","opt","validate","defaultOpt","continueToValidate","getValidatorOptions","isValidEmail","mail","isDate","isPast","now","getTime","isValidLength","validator","Required","validateOpt","triggeredByChange","Email","PastDate","Length","validateControl","getLabel","formOption","requiredMark","getLabelAsString","ValidationAlert","TextInput","handleChange","helpText","attrs","fieldId","usePlaceholder","fieldLabel","placeHolder","valueStr","prependText","onKeyDown","onBlur","checked","optionValue","DateSeparateInput","thisYear","year","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","h","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","hasGTM","dataLayer","pageView","pageOpt","sendEvent","eventName","sendGAEvent","category","Contact","emailReceiver","fb","phone","email","enquiry","sendingStatus","setSendingStatus","gtm","contactEmail","render","ContactForm","debounce","ms","_","apply","arguments","loadApi","onApiReady","YT","tag","onYouTubeIframeAPIReady","firstScriptTag","insertBefore","thumbnailMax","videoId","getYoutubeCode","YoutubeBannerMobilePopup","youtubeBannerRef","playerStatus","setPlayerStatus","playerSize","setPlayerSize","ytPlayer","setYtPlayer","muted","setMuted","countPlayedRef","popupOpened","setPopupOpened","video","videoLinkOrId","playerId","yt","posterImageUrl","mobileImageUrl","canPlayVideo","loadVideo","container","containerSize","w","size","getSize","player","Player","events","PlayerState","ENDED","countPlayed","playVideo","mute","resized","canPlay","Fragment","allow","frameBorder","pauseVideo","unMute","channel","isOpen","onClose","YoutubeBannerPanel2","YoutubeEmbedded","videoCode","YoutubeEmbed","SearchResult","keyword","q","atdw","PageList","AtdwSearchResultWithSite","searchHighlight","Code","code","codeType","codeJson","InstagramFeed","BlogPosts","posts","numOfPost","parseInt","xs","sm","md","lg","xl","xxl","postDate","BlogPostTitle","MultiColumnPanel","reverse","columnWidths","mobileColumnWidths","countItem","countD","countM","col","ExpandableHtml","open","setOpen","buttonTitle","icon","iconOpen","iconClosed","panelCollapsed","panelOpen","photoGallery","photos","photoContainer","photo","photoEmpty","enablePanzoom","showCaption","PhotoGallery","imageElts","im","_tileType","AtdwMap","PageMemo","memo","pageData","sectionItems","sections","section","Section","sectionName","prevProps","nextProps","ViewPartial","pageLoaded","setPageLoaded","menuData","AtdwPagePartial","AtdwPageBaner","multimedia","communication","_com","website","book","attributeIdCommunicationDescription","communicationDetail","va","abc","checkImageType","attributeIdMultimediaContent","attributeIdSizeOrientation","crossOrigin","srcSet","serverPath","multimediaId","_images","onCheckOpen","AtdwContactDetails","AtdwDateTime","dates","todayDate","pDate","frequencyStartTime","AtdwAttributes","attributes","entity_fac","attributeTypeId","attributeIdDescription","AtdwLocation","addresses","geoCode","lat","lng","ele","attributeIdAddress","Number","geocodeGdaLatitude","geocodeGdaLongitude","checkScript","maps","removeChild","marker","google","Map","center","zoom","Marker","checkOpen","getMetaTag","productShortDescription","AtdwPage","themeColor","onChangeThemeColor","atdwProduct","setAtdwProduct","productCategoryId","setCheckOpen","address","prop","productDescription","atdwMap","filters","borderColor","popupBackground","popupTitle","popupTown","popupDesc","Portal","mount","createPortal","currentFilterType","fetchAble","mapSate","setMapSate","openPopup","setOpenPopup","popupData","setPopupData","abortController","AbortController","signal","results","productResult","_el","googlemap","infowindow","InfoWindow","navigator","userAgent","addListener","close","abort","switchMap","expendablePanel","expendablePanelTitle","expendablePanelContent","setAtdw","accom","attraction","destinfo","restaurant","hire","genservice","tour","_atdw","accomm","productType","SiteLink","other","goToLink","tiles","tile","tileImage","mixin","tileIcon","Feeds","displayingPosts","Feed","allowFullScreen","pageTypeCode","ViewPage","embedStatus","setEmbedStatus","loadEmbedJs","instgrm","Embeds","useInstagram","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","floor","animate","$section","getCurrentHtml","ItemId","SectionId","Content","itemid","formvals","cms_replace_item_html","EditPage","cmsViewMode","publishVer","editVer","pageId","cmsPageController","catch","SearchBar","onCloseMenu","setKeyword","searchKeyword","NavBar","currentLocation","menuItemElts","MenuItem","subMenuOpened","setSubMenuOpened","SubMenuItem","closeMenu","toggleSubmenu","TopHeader","menuOpened","setMenuOpened","setCurrentLocation","scrolled","setScrolled","initHistory","setHistory","nav","getLast","getPrevious","getPreviousPath","anchor","routeChanged","aria-label","BottomDock","isCurrent","linkElts","CommonVideoPopup","toggler","setToggler","sources","setSources","popupIndex","setPopupIndex","onOpen","PageUpdated","parallax","AppLayout","setThemeColor","useScrollPosition","prevPos","currPos","AOS","App","setAtdwDataHistory","setAtdwDataHistory2","isLocalhost","Boolean","serviceUpdateCheckerInterval","registerValidSW","swUrl","serviceWorker","register","updateViaCache","registration","scope","clearInterval","setInterval","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.c2473f26.chunk.js","sourcesContent":["// closest\r\n\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || \r\n Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function(s) {\r\n var el = this;\r\n\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n\r\n\r\n// getBoundingClientRect","import React from 'react';\n\nexport function NotFound(props) {\n const debugInfo = props.debugInfo;\n\n function refreshPage(e) {\n e.preventDefault();\n 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 locale: getLocale(),\n siteName: process.env.REACT_APP_SITENAME,\n titleSuffix: process.env.REACT_APP_TITLESUFFIX,\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 \n bvClientId: process.env.REACT_APP_BAZZAR_CLIENT_ID,\n bvSiteId: process.env.REACT_APP_BAZZAR_SITE_ID,\n bvEnv: process.env.REACT_APP_BAZZAR_ENV,\n bvLocale: getLocale() === 'nz' ? 'en_NZ' : 'en_AU',\n}\n\nfunction getLocale() {\n return process.env.REACT_APP_COUNTRY_LOCALE || getCountry()\n}\n\nfunction getCountry() {\n if (typeof window !== `undefined`) {\n if (window.location.hostname.toLowerCase().indexOf(\".nz\") >= 0) return 'nz';\n if (window.location.hostname.toLowerCase().indexOf(\"-nz\") >= 0) return 'nz';\n if (window.location.search === '?nz=true') return 'nz';\n }\n return 'au';\n}\n\nconsole.log(process.env, config)\nexport default {\n ...config\n}\n","import React from 'react';\r\nimport env from '../../env';\r\n\r\nexport function AppVersion(props) {\r\n\r\n const [checkStatus, setCheckStatus] = React.useState('idle')\r\n //const [secs, setSecs] = React.useState(10)\r\n const ver = env.ver;\r\n const updateDate = env.updateDate;\r\n\r\n React.useEffect(() => {\r\n console.log(checkStatus);\r\n if (checkStatus === 'checking') {\r\n if (typeof window !== `undefined`) {\r\n window.updateSW().then(function () {\r\n console.log('sw update called');\r\n setCheckStatus('checked')\r\n })\r\n }\r\n\r\n let timer = setTimeout(() => {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload()\r\n }\r\n }, 5000)\r\n return () => { clearTimeout(timer) }\r\n }\r\n }, [checkStatus])\r\n\r\n function checkUpdates(e) {\r\n if (typeof window !== `undefined`) {\r\n if (window.updateSW) {\r\n setCheckStatus('checking')\r\n } else {\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n\r\n function refreshApp(e) {\r\n if (typeof window !== `undefined`) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n let button = null\r\n if (checkStatus === 'checking') {\r\n button = ;\r\n } else if (checkStatus === 'checked') {\r\n button = <>
(If this does't reload automatically, please click the above button)
;\r\n } else {\r\n button = ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Version: {ver} ({updateDate})\r\n
\r\n
\r\n {button}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport function AppVersionPage(props) {\r\n return (\r\n
\r\n \r\n
);\r\n}","import React from 'react';\n\nexport function Button({onClick, status, children, btnStyle='primary'}) {\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: '\"proxima-nova\",sans-serif',\n familyHeader: '\"proxima-nova\",serif',\n primaryColor: '#30b0c5',\n fontColor: '#373637',\n bgColor: '#ebebeb',\n themeDefaultColor : '#b84a4b',\n themeRedColor : '#b84a4b',\n themeOrangeColor : '#f79552',\n themeGreenColor : '#a1c288',\n themeBlueColor : '#4cb2bd',\n themeYellowColor : '#dbb079',\n themePurpleColor : '#7d3f60',\n themeGreyColor : '#373637',\n ...overloading\n}\nexport default variables;","import variables from 'cssInJs/variables';\n\nconst cssEmotion = {\n breakpointNames: variables.breakpointNames,\n breakpoints: variables.breakpoints\n}\n\nconst iconColors = {\n primary: variables.primaryColor,\n secondary: variables.secondaryColor || '#000'\n}\n\nexport default {\n cssEmotion,\n iconColors\n}","import * as React from \"react\";\r\nimport siteConfig from '../../../config';\r\n\r\nconst iconColors = (siteConfig && siteConfig.iconColors) || { primary: \"#eee\", secondary: \"#000\" }\r\n\r\nfunction SvgLoading(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgLoading;","import React from 'react';\r\nimport { LoadingCircle } from '../../icons';\r\n/** @jsx jsx */\r\nimport { css, jsx } from '@emotion/core'\r\n\r\nexport function Loading({ 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\n\r\n//#region manipulation\r\nexport const addDays = (date, days) => {\r\n var result = new Date(date)\r\n result.setDate(result.getDate() + days)\r\n return result\r\n}\r\n//#endregion\r\n\r\n//#region format\r\nexport function formatYYYYMMDD(dateObj) {\r\n const date = toDate(dateObj);\r\n //console.log(dateObj, date)\r\n if (!date) return '';\r\n var dd = date.getDate();\r\n var mm = date.getMonth() + 1; //January is 0!\r\n\r\n var yyyy = date.getFullYear();\r\n if (dd < 10) {\r\n dd = '0' + dd;\r\n } \r\n if (mm < 10) {\r\n mm = '0' + mm;\r\n } \r\n return (`${yyyy}-${mm}-${dd}`)\r\n}\r\n\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 parseDate(dateObj, 'yyyy-MM-dd') ||\r\n parseDate(dateObj, 'yyyy-M-d') ||\r\n parseDate(dateObj, 'dd/MM/yyyy') ||\r\n parseDate(dateObj, 'd/M/yyyy') ||\r\n parseISO(dateObj)\r\n } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function toDateTime(dateObj){\r\n if (!dateObj) return null;\r\n if (typeof dateObj === 'string') {\r\n return 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 } else {\r\n return dateObj;\r\n }\r\n}\r\n\r\nexport function parseDate(dateStr, format) {\r\n const date = parse(dateStr, format, new Date());\r\n return date && isValidDate(date)? date : null;\r\n}\r\n\r\nexport function isValidDate(d) {\r\n return d instanceof Date && !isNaN(d);\r\n}\r\n//#endregion","//#region background images\r\nexport const bgUrl = (imageUrl) => {\r\n return `background-image:url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n\r\nexport const bgUrlStyle = (imageUrl) => {\r\n return `url(\"` + encodeURI(decodeURI(imageUrl)) + `\")`\r\n}\r\n//#endregion\r\n\r\n//#region screen/element size\r\nexport const screenWidth = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerWidth ||\r\n document.documentElement.clientWidth ||\r\n document.body.clientWidth\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const screenHeight = () => {\r\n if (typeof window !== `undefined`) { \r\n return window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight\r\n } else {\r\n return 0;\r\n }\r\n}\r\n\r\nexport const outerWidth = el => el.offsetWidth\r\nexport const outerHeight = el => el.offsetHeight\r\n//#endregion\r\n\r\n//#region css class\r\n/**\r\n * Check if element has the css class on it.\r\n */\r\nexport const hasClass = (el, className) => {\r\n if (el.classList) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!el.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`))\r\n}\r\n\r\n/**\r\n * Adds the provided css className to the element.\r\n */\r\nexport const addClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.add(className)\r\n return\r\n }\r\n\r\n if (!hasClass(el, className)) {\r\n el.className += ` ${className}`\r\n }\r\n}\r\n\r\n/**\r\n * Remove the provided css className from the element.\r\n */\r\nexport const removeClass = (el, className) => {\r\n if (el.classList) {\r\n el.classList.remove(className)\r\n return\r\n }\r\n\r\n if (hasClass(el, className)) {\r\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`)\r\n el.className = el.className.replace(reg, ' ')\r\n }\r\n}\r\n\r\n/**\r\n * Adds or removes a class name on the input depending on the status flag.\r\n */\r\nexport const toggleClass = (el, className, status) => {\r\n if (!el || !className) return\r\n\r\n if (status) {\r\n return addClass(el, className)\r\n }\r\n\r\n removeClass(el, className)\r\n}\r\n//#endregion","import { gsap } from 'gsap';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\n\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport function scrollTo(selector, duration = 750, delay = 0) {\r\n const el = findElement(selector);\r\n if (el) {\r\n setTimeout(() => {\r\n //console.log(element);\r\n const offset = elementOffset(el);\r\n //console.log(offset)\r\n //window.scrollTo(0, offset.top - 300);\r\n\r\n gsap.to(window, {duration: (duration/1000), scrollTo: offset.top - 100, ease: 'power1'});\r\n\r\n }, delay);\r\n //el.scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' }); }, timeout);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function findElement(selector) {\r\n if (typeof selector !== 'string') return selector;\r\n\r\n let found = querySelectorOrNull(selector)\r\n || querySelectorOrNull('#' + selector)\r\n || querySelectorOrNull('.' + selector)\r\n \r\n return found;\r\n}\r\n\r\nexport function querySelectorOrNull(selector) {\r\n try {\r\n return document.querySelector(selector);\r\n } catch(e){\r\n return null;\r\n };\r\n}\r\n\r\nexport function elementOffset(el) {\r\n var rect = el.getBoundingClientRect(),\r\n scrollLeft = typeof window !== `undefined` ? (window.pageXOffset || document.documentElement.scrollLeft) : 0,\r\n scrollTop = typeof window !== `undefined` ? (window.pageYOffset || document.documentElement.scrollTop) : 0;\r\n\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft, width: el.offsetWidth, height: el.offsetHeight }\r\n}\r\n\r\nexport function isElementInViewport (el) {\r\n if (typeof window !== `undefined`) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\r\n );\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nexport function getCurrentBreakpoint() {\r\n if (typeof window === `undefined`) return null;\r\n \r\n const bpHolder = document.querySelector('.devMediaQueryStatus__current');\r\n if (!bpHolder) return null;\r\n return window.getComputedStyle(bpHolder, ':before').getPropertyValue('content').replace(/[\"']/g, '');\r\n}\r\n\r\n","export function formatMoney(number, fraction = 0) {\r\n var formatter = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n minimumFractionDigits: fraction,\r\n });\r\n\r\n return formatter.format(number);\r\n}\r\n\r\nexport function toMonthlyCost(amount, frequency) {\r\n if (!amount) return 0;\r\n if (frequency === 'Week') {\r\n return amount * 52.1429 / 12.0;\r\n } else if (frequency === 'Fortnight') {\r\n return amount * 52.1429 / 2.0 / 12.0;\r\n } else if (frequency === 'Month') {\r\n return amount;\r\n } else if (frequency === 'Quarter') {\r\n return amount * 4.0 / 12.0;\r\n } else if (frequency === 'Year') {\r\n return amount / 12.0;\r\n } else {\r\n return amount;\r\n }\r\n}\r\n","export function isBlank(str) {\r\n return (!str || /^\\s*$/.test(str))\r\n}\r\n\r\nexport function isEmpty(str) {\r\n return (!str || str.length === 0)\r\n}\r\n\r\nexport function isNumeric(num){\r\n return !isNaN(num)\r\n}\r\n\r\nexport function capitalize(expression) {\r\n return expression.charAt(0).toUpperCase() + expression.slice(1);\r\n}\r\n\r\nexport function toFieldName(str) {\r\n if (!str) return null;\r\n return capitalize((str.replace(/([A-Z]+)/g, ' $1').replace(/([A-Z][a-z])/g, ' $1')).trim());\r\n}\r\n\r\nexport function toHtml(str) {\r\n if (!str) return null;\r\n return str.replace(/[\\n\\r]/g, '
')\r\n}\r\n\r\n// Shorten a string to less than maxLen characters without truncating words.\r\nexport function truncateWords(str, maxLen, separator = ' ', ellipsis = '...') {\r\n if (str.length <= maxLen) return str\r\n var pos = str.lastIndexOf(separator, maxLen)\r\n return str.substr(0, pos) + ellipsis\r\n}\r\n\r\nexport function numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n}\r\n\r\nexport const formatNumber = (value) => {\r\n if (value === 0) return '0';\r\n if (!value) return '';\r\n return Math.round(value * 100) / 100\r\n}\r\n\r\nexport const toTelephoneNumber = (str) => {\r\n return (str || []).replace(/[^+\\d]+/g, \"\");\r\n\r\n}\r\n\r\n// utils.text.like('text here', '%keyword%')\r\nexport const like = (str, search) => {\r\n if (typeof search !== 'string' || str === null) { return false; }\r\n // Remove special chars\r\n search = search.replace(new RegExp(\"([\\\\.\\\\\\\\\\\\+\\\\*\\\\?\\\\[\\\\^\\\\]\\\\$\\\\(\\\\)\\\\{\\\\}\\\\=\\\\!\\\\<\\\\>\\\\|\\\\:\\\\-])\", \"g\"), \"\\\\$1\");\r\n // Replace % and _ with equivalent regex\r\n search = search.replace(/%/g, '.*').replace(/_/g, '.');\r\n // Check matches\r\n return RegExp('^' + search + '$', 'gi').test(str);\r\n\r\n}","import shortid from 'shortid';\r\nimport uuid from 'uuid/v4';\r\n\r\nexport function shortId() {\r\n return shortid();\r\n}\r\n\r\nexport function guid() {\r\n return uuid();\r\n}","export function toCamel(o) {\r\n var newO, origKey, newKey, value\r\n if (o instanceof Array) {\r\n return o.map(function(value) {\r\n if (typeof value === \"object\") {\r\n value = toCamel(value)\r\n }\r\n return value\r\n })\r\n } else {\r\n newO = {}\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()\r\n value = o[origKey]\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = toCamel(value)\r\n }\r\n newO[newKey] = value\r\n }\r\n }\r\n }\r\n return newO\r\n}","import { getFilename } from './url';\r\nimport { contains } from './array';\r\nexport function getImageSetPath(url, setId) {\r\n const info = getPathDetails(url)\r\n if (!info) return url;\r\n //console.log(url, info);\r\n return info.baseFolder + \"/@\" + setId + '/' + info.filename\r\n}\r\n\r\nexport function getPathDetails(url, setIds) {\r\n if (!url) return null;\r\n const parts = url.split('/').slice(0, -1);\r\n if (parts.length <= 1) return { baseFolder: '/', setId: null, filename: getFilename(url) };\r\n\r\n const lastFolder = parts[parts.length - 1];\r\n const hasSet = setIds && setIds.length > 0 ? contains(setIds, x => x === lastFolder) : lastFolder.indexOf('@') === 0;\r\n\r\n return hasSet ?\r\n { baseFolder: parts.slice(0, -1).join('/'), setId: lastFolder, filename: getFilename(url) } :\r\n { baseFolder: parts.join('/'), setId: null, filename: getFilename(url) }\r\n}","import classNames from 'classnames';\r\nimport * as url from './url';\r\nimport * as form from './form';\r\nimport * as array from './array';\r\nimport * as date from './date';\r\nimport * as css from './css';\r\nimport * as ui from './ui';\r\nimport * as money from './money';\r\nimport * as text from './text';\r\nimport * as random from './random';\r\nimport * as object from './object';\r\nimport * as media from './media';\r\n\r\nexport default { classNames, url, form, array, date, css, ui, money, text, random, object, media};","import utils from \"utils\";\nimport env from 'env';\n\nexport const isMobile = () => {\n var width = utils.css.screenWidth()\n return width < 768\n}\n\nexport function resourcePath(url){\n return utils.url.isExternalLink(url)? url : env.resourceBase + url;\n}\n\nexport const isNZ = env.locale === 'nz'","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 = {\r\n page: null,\r\n menu: null,\r\n popup: null,\r\n history: null\r\n};\r\n\r\nconst reducer = (state = initialState, action) => {\r\n //console.log('reducer', action)\r\n switch (action.type) {\r\n case 'SET_PAGE':\r\n return {\r\n ...state,\r\n page: action.payload\r\n };\r\n case 'SET_MENU':\r\n return {\r\n ...state,\r\n menu: action.payload\r\n };\r\n case 'SET_POPUP':\r\n return {\r\n ...state,\r\n popup: action.payload\r\n };\r\n case 'SET_HISTORY':\r\n return {\r\n ...state,\r\n history: action.payload\r\n };\r\n case 'SET_STATE':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n throw new Error(\"Unexpected action\");\r\n }\r\n};\r\n\r\nexport { initialState, reducer };","import React, { createContext, useReducer, useContext, useEffect } from 'react';\r\nimport { initialState, reducer } from '../../store';\r\n\r\nconst StoreContext = createContext(initialState);\r\n\r\nconst StoreProvider = ({ children }) => {\r\n // Get state and dispatch from Reacts new API useReducer. \r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n //console.log('StoreProvider')\r\n // Log new state\r\n useEffect(() => {\r\n //console.log('-- new state', state);\r\n //console.trace();\r\n }, [state]);\r\n // Render state, dispatch and special case actions\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport { StoreContext, StoreProvider };\r\n\r\nexport const useStore = () => useContext(StoreContext);","import 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}","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, 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 }))\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 towns = props.towns;\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 });\n\n const today = new Date();\n const checkInMinDate = dateFormat(today);\n const [checkOutMinDate, setCheckOutMinDate] = useState(dateFormatPlus2(today));\n const typeOptions = setTypeOptions();\n //console.log(\"1111\", typeOptions.items);\n function setTypeOptions(){\n if(atdwType === 'ACCOMM'){\n return {title : 'Accommodation Type',\n bookingAble : true, dateAble : false,\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, dateAble : 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, dateAble : true,\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, dateAble : 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, dateAble : 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, dateAble : 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 //console.log(\"value\", value);\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\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{\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 typeOptions.bookingAble ? (\n
\n \n \n
\n ) : null\n }\n {\n typeOptions.dateAble ? (\n
\n \n \n
\n ) : null\n }\n
\n \n \n {/* */}\n {/* */}\n
\n
\n\n
\n {\n typeOptions.bookingAble ? (\n
\n \n \n
\n ) : null\n }\n {\n typeOptions.dateAble ? (\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 );\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 }\n })),\n bg : css({\n paddingTop: '60%',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n }),\n town : css({\n padding : '0rem 0.5rem',\n backgroundColor : 'grey',\n fontWeight : '700'\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 { 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 const product = props;\n const _atdwContext = useContext(AtdwContext);\n return(\n
\n {\n _atdwContext.setupAtdwDataHistory2(product.productId);\n }}>\n
\n
\n {product.town}\n
\n
\n
\n {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 [products, setProducts] = useState(props.atdwData || []);\n const atdwDatas = props.atdwData || [];\n\n return(\n
\n
\n { atdwDatas.map((item, index) => )}\n {/* { atdwDatas.map((item, index) => {\n return ()\n })} */}\n
\n
\n )\n}","function payload(item, key, defaultVal = '') {\n const found = item.payloads.find(x => x.key === key);\n return found ? found.value : defaultVal;\n}\n\nexport default { payload };","/** @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 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 = \"EATING OUT\";\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 AtdwSearch(props){\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n //console.log(\"AtdwSearchItem11111\", item);\n const cssClass = utils.classNames('cms_item', 'atdwSearch', 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 const tilesSize = 12;\n const atdwType = cmsUtils.payload(item, 'ProductType');\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 : atdwType,\n index : 1,\n atdwDataFromDB : [],\n reserveAtdwData : [],\n atdwData : [],\n towns : [],\n trigger : 0,\n context : useContext(AtdwContext)\n });\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 const onGetSearchOptionFun = ((value) => {\n const _checkIn = value.checkIn ? value.checkIn : '';\n const _checkOut = value.checkOut ? value.checkOut : '';\n const _numOfAdults = value.numOfAdults.value ? value.numOfAdults.value : '';\n const _numOfKids = value.numOfKids.value ? value.numOfKids.value : '';\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 const _filteredData = atdwState.atdwDataFromDB.filter((data) => { \n let returnResult = false;\n //1\n if(subType.length > 0){\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 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 returnResult = false;\n if(data.productName.toLowerCase().includes(name.toLowerCase())){\n returnResult = true;\n }\n }\n\n //4 for event //atdwState.atdwType === 'ACCOMM'\n if(atdwState.atdwType === 'EVENT'){\n if(returnResult === true && (_checkIn !== \"\" && _checkIn !== null)){\n returnResult = false;\n if(data.additionalData.eventFrequency.length > 0){\n var fDate = new Date(_checkIn);\n var tDate = new Date(_checkOut);\n for(var n in data.additionalData.eventFrequency){\n var pFDate = new Date(data.additionalData.eventFrequency[n].frequencyStartDate);\n var pTDate = new Date(data.additionalData.eventFrequency[n].frequencyEndDate);\n if(pFDate >= fDate && pTDate <= tDate){\n returnResult = true;\n break;\n }\n }\n }\n \n }\n }\n return returnResult;\n });\n \n const _data = [];\n if(_filteredData.length > 0){\n for(var x = 0; x < tilesSize; x++){\n _data.push(_filteredData[x]);\n if(x === (_filteredData.length -1)){\n break;\n }\n }\n }\n\n //setReserveAtdwData(_filteredData);\n\n setAtdwState(pre => {\n let _new = {...pre};\n _new.reserveAtdwData = _filteredData;\n if(_checkIn !== '' && atdwState.atdwType === 'ACCOMM'){\n setCheckIn(_checkIn);\n setCheckOut(_checkOut);\n setNumOfAdults(_numOfAdults);\n setNumOfKids(_numOfKids);\n setTrigger(trigger + 1);\n }\n else{\n _new.atdwData = _data;\n _new.index = 1;\n \n _new.context.setupAtdwDataHistory({\n atdwDataFromDB : _new.atdwDataFromDB,\n reserveAtdwData : _new.reserveAtdwData,\n atdwData : _new.atdwData,\n index : _new.index\n });\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 = 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 }, 500);\n return;\n }\n\n const fetchData = async () =>{\n const res = await fetch(env.apiBase + \"/api/atdw/getproducts/\" + atdwState.atdwType);\n const data = await res.json();\n const _data = [];\n if(data.products.length > 0){\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 }\n\n setAtdwState(pre => {\n let _new = {...pre};\n _new.atdwDataFromDB = data.products; \n _new.towns = data.tows;\n _new.reserveAtdwData = data.products;\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 fetchData();\n }, [ atdwState.atdwType, atdwState.context ]);\n\n useEffect(() => { \n if(trigger === 0){\n return\n }\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 }\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 const data = await res.json();\n //console.log(\"data\", data);\n const r_data = [];\n const _data = [];\n for(var i = 0; i < atdwState.reserveAtdwData.length; i++){\n for(var n =0; i < atdwState.reserveAtdwData[i].additionalData.externalSystems; n++){\n if(data.toString().includes(atdwState.reserveAtdwData[i].additionalData.externalSystems[n].externalSystemText)){\n r_data.push(atdwState.reserveAtdwData[i]);\n if(i < tilesSize){\n _data.push(atdwState.reserveAtdwData[i]);\n }\n break;\n }\n }\n }\n //setReserveAtdwData(r_data);\n //setAtdwData(_data);\n setAtdwState(pre => {\n let _new = {...pre};\n _new.reserveAtdwData = r_data;\n _new.atdwData = _data;\n return _new;\n });\n };\n fetchData();\n setTrigger(0);\n }, [trigger, checkIn, checkOut, numOfAdults, numOfKids, atdwState.reserveAtdwData]);\n\n const addAtdw = useCallback((reserveAtdwData, _atdwContext)=>{\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 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\n return _new;\n });\n }, [atdwState.index]);\n\n return(\n
\n
\n \n \n
\n 1 to { atdwState.atdwData.length } of { atdwState.reserveAtdwData.length }\n
\n { atdwState.atdwData ? (\n \n ) : null }\n { atdwState.reserveAtdwData.length >=12 ? (\n
\n 1 to { atdwState.atdwData.length } of {atdwState.reserveAtdwData.length}\n
\n ) : null }\n\n {\n atdwState.atdwData.length !== atdwState.reserveAtdwData.length && atdwState.atdwData.length > 0 ?\n
\n \n
: null\n }\n\n {\n atdwState.atdwData.length === 0 ?\n
Sorry, there are no available results.
: null\n }\n \n
\n
\n );\n}","import { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\nexport default {\n tileSize : css({\n //border : '1px solid red',\n position : 'relative',\n height : '450px',\n 'img' : {\n //border : '1px solid red'\n position : 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width : '101%'\n }\n }),\n banerIconsBar : css({\n textAlign : 'center',\n backgroundColor : 'grey',\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 : '.7rem',\n color : '#fff'\n }\n }),\n cityName : css({\n textAlign : 'center',\n margin : '0px'\n }),\n productName : css({\n textAlign : 'center',\n margin : '0px'\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 }),\n atdwLoaction__click : css({\n position : 'absolute',\n width : '100%',\n height:'48px',\n zIndex: '99999',\n cursor: 'pointer'\n })\n}","import React, {useRef, useEffect} 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 const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n\n const slides = subItems.map((subItem, index) =>\n \n );\n const bannerPanel = useRef(null);\n var settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: true,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n 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 const cssClass = utils.classNames('cms_item', 'bannerPanel', `bannerWrapperSize--${heightSet}`, item.cssClass || item.anchorName || '');\n useEffect(()=>{\n var x = bannerPanel.current.querySelectorAll(\"div.slick-slide\");\n for(var i = 0; i < x.length; i++){\n x[i].style.zIndex = 0;\n }\n x[0].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('BannerItem', 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 caption = cmsUtils.payload(item, 'Caption');\n const caption = cmsUtils.payload(item, 'ExtraCaption');\n \n //console.log('item', bgUrl);\n // const titlePanel = captionTitle ? (\n // linkUrl ? (\n //
\n //
) : (
)\n // ) : null;\n\n const titlePanel = captionTitle ? (
) : null;\n return (\n linkUrl ? (linkUrl.includes('-360/index.') ? \n
\n {titlePanel && \n
\n
\n
\n
\n {titlePanel}\n
\n {caption ?
{ caption }
: null}\n
\n
\n
\n }\n
\n
: (\n \n
\n {titlePanel && \n
\n
\n
\n
\n {titlePanel}\n
\n {caption ?
{ caption }
: null}\n
\n
\n
\n }\n
\n
\n )) : (
\n {titlePanel && \n
\n
\n
\n
\n {titlePanel}\n
\n \n {caption ?
{ caption }
: null}\n
\n
\n
\n }\n
)\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\n let bgUrl = null;\n if (imageUrl)\n bgUrl = utils.site.resourcePath(imageUrl);\n else if (backgroundTile)\n bgUrl = utils.site.resourcePath(`/dist/transparent-textures/textures/${backgroundTile}`);\n\n const cssClass = utils.classNames('cms_item', 'contentPanel', 'contentPanel--' + bgTheme, item.cssClass || item.anchorName || '');\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n\n return (\n
\n {/*
*/}\n
\n {subItemsElts}\n
\n
\n );\n}\n","import React, { useLayoutEffect, useRef } from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { useRouter } from 'components';\nimport { handleElementLink } from 'components';\nimport env from 'env';\n\nexport function Html(props) {\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n const { history } = useRouter();\n //console.log('item', item, cmsOption);\n\n let content = cmsOption.isCmsEdit? \n cmsUtils.payload(item, 'Content'): \n cmsUtils.payload(item, 'Content').replace(\"__version__\", \" PWA \"+ ver +\"\");\n\n if (!cmsOption.isCmsEdit){\n //console.log(content)\n if (utils.site.isNZ){\n content = content.replace(/{\"price\":\"B9000RA\"}/g, 'RRP: NZ $499.99').replace(/{"price":"B9000RA"}/g, 'RRP: NZ $499.99')\n } else {\n content = content.replace(/{\"price\":\"B9000RA\"}/g, 'RRP: AU $429.95').replace(/{"price":"B9000RA"}/g, 'RRP: AU $429.95')\n }\n }\n const cssClass = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n function handleClick(e) { \n \n let target = \"\";\n if(e.target.closest('a')){\n target = e.target.closest('a').getAttribute('target');\n }\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n \n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url)\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n }\n }\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n const buttons = htmlBlock.current.querySelectorAll('.button');\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i])\n }\n\n // const youtubes = htmlBlock.current.querySelectorAll('iframe[src*=\"youtube\"]');\n // console.log(youtubes)\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n\n }, [])\n\n return (\n
handleClick(e)}>
\n )\n}\n\n\nfunction restructureButton(el) {\n if (!el.querySelector('span')) {\n const span = document.createElement('span');\n span.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(span);\n }\n}","import React from 'react';\nimport { 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, { useRef } from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\n//import Html from 'cms/items/html/view';\n\nexport function ImagePanel(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n \n const cssClass = utils.classNames('cms_item', 'imagePanel', 'parallax', `bannerSize--${heightSet}`, item.cssClass || item.anchorName || '');\n const bgUrl = utils.site.resourcePath(cmsUtils.payload(item, 'ImageUrl'));\n\n const htmlBlock = useRef(null);\n const cssClass2 = utils.classNames('cms_item', 'htmlPanel', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n const content = cmsUtils.payload(item, 'Content');\n\n return (\n \n //data-cms-item-id={cmsOption.isCmsEdit && item.itemId} id={item.anchorName}\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 pageTiles : css({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n //margin: '2rem -10px'\n margin: '2rem auto',\n maxWidth : '960px',\n '&.notUseSlider .pageTile__j5' : css(mq({\n flexBasis: ['100%', '46%', '30.33%'],\n maxWidth : ['100%', '46%', '30.33%'],\n position: 'relative',\n margin: \"10px\",\n overflow:'hidden'\n }))\n }),\n useSliderpageTiles : css({ \n '& .slick-track' : css({\n display:'flex !important',\n '& .slick-slide' : css({\n height: 'inherit !important',\n }),\n '& .slick-slide>div' : css({\n height:'100%'\n }),\n '& .pageTile__j5' : css({\n height : '100%',\n margin:'0px !important',\n padding : '10px'\n }),\n '& a.pageTile__j5__content' : css({\n display:'flex',\n flexDirection:'column',\n height: '100%',\n '& .pageTile__j5__content__details' : css({\n height: 'unset !important',\n flexGrow : '1'\n })\n })\n }), \n '&.useSlider .pageTile__j5' : css({\n margin: \"10px\"\n }),\n }),\n// pageTile__tile : css(mq({\n// flexBasis: ['100%', '46%', '30.33%' ],\n// maxWidth : ['100%', '46%', '30.33%' ],\n// //padding: '10px',\n// position: 'relative',\n// margin: \"10px\",\n// overflow:'hidden'\n// })),\n\n tile__content : css({\n '&:hover' : {\n textDecoration: 'none',\n '.pageTile__j5__content__details' : {\n opacity:'1 !important'\n }\n } \n }),\n\n tile__bg : css(mq({\n transition: 'all .2s ease-in-out',\n height: ['auto !important', '200px !important'],\n objectFit: 'cover',\n })),\n\n tile__details : css({\n transition: 'all .2s ease-in-out',\n marginTop: '0.5rem',\n //padding: '.5rem 2rem 1.5rem',\n color: '#000',\n textDecoration: 'none',\n overflow: 'hidden',\n padding: '10px 15px',\n height:'100%'\n }),\n\n tile__details__wrapper : css({\n minHeight: '7rem'\n }),\n\n tile__details__title : css({\n //marginBottom : '1rem',\n color : '#fff',\n margin: '0px',\n fontSize : '1.4rem',\n fontWeight : '700',\n marginBottom: '0.5rem'\n }),\n tile__details__desc : css(mq({\n fontSize : ['0.9rem', '0.7rem'],\n fontWeight: '100',\n lineHeight: '1.2',\n color : '#fff'\n }))\n}","import cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { SiteLink } from 'components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\nimport Slider from \"react-slick\";\n\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 //console.log(\"aa\", page);\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n return ( \n
\n \n \"image3\"/\n
\n
\n

\n {page.pageTitle}\n

\n
\n {page.tileDesc || page.description}\n
\n
\n
\n
\n
\n )\n}\n\nexport function PageTileJ5(props){\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'));\n const useSlider = cmsUtils.payload(item, 'UseSlider') === 'slider';\n\n var settings = {\n dots: false,\n infinite: true,\n speed: 500,\n autoplaySpeed: 3000,\n fade: false,\n autoplay: true,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n ]\n };\n\n const pageTileElts = pages.map((page, index) =>\n \n );\n const cssClass = utils.classNames('cms_item', 'pageTiles__j5', useSlider ? 'useSlider' : 'notUseSlider', item.cssClass || item.anchorName || '');\n \n if(useSlider){\n return(\n
\n \n {pageTileElts}\n \n
\n )\n }\n else{\n return (\n
\n {pageTileElts}\n
\n );\n }\n} ","import { css } from '@emotion/core'\nimport { mq, variables } from '../../../cssInJs'\n\nexport default {\n pageTiles : css({\n display: 'flex',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n margin: '2rem -10px',\n overflow:'hidden'\n }),\n pageTile__tile : css(mq({\n flex: '0 0 100%',\n maxWidth: '100%',\n padding: '10px',\n zIndex:'1',\n '&:nth-of-type(even)' : {\n '.pageTile__bsyc__bg' : mq({\n order: ['0',null,'2'],\n }),\n '.pageTile__bsyc__content__details' : mq({\n order: '1'\n })\n }\n })),\n\n tile__content : css({\n '&:hover' : {\n textDecoration: 'none',\n '& .pageTile__bsyc__content__details' : {\n color: 'white',\n },\n // '& .pageTile__bsyc__content__details::after' : {\n // content:'\"\"',\n // backgroundColor:'rgba(0,0,0,0.5)',\n // width:'100%',\n // height:'100%',\n // display:'block'\n // },\n '& .pageTile__bsyc__bg2' : {\n //transform: scale(1.05)\n transform : 'scale(1.05)'\n }\n }\n }),\n\n tile__flip__wrapper : css({\n zIndex:'-1', \n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n flexWrap: 'wrap'\n }),\n\ntile__bg : css(mq({\n height: '0',\n paddingTop: ['50%','35%','30%'],\n //height: ['50%','35%','30%'],\n flex: '1 1 300px',\n overflow:'hidden',\n position:'relative'\n})),\n\ntile__bg2 : css(mq({\n height: '100%',\n backgroundPosition: '50%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n //overflow:'hidden',\n transition:'all .2s',\n position:'absolute',\n top:'0px',\n width:'100%'\n})),\n tile__details : css({\n overflow: 'hidden',\n flexGrow: '1',\n textAlign: 'center',\n width: '100%',\n bottom: '0',\n backgroundImage : 'url(\"/assets/tile-graphic.png?v=1\")',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n backgroundColor: variables.themeDefaultColor,\n '&.left' : css({\n backgroundPosition: 'left'\n }),\n '&.right' : css({\n backgroundPosition: 'right'\n }),\n '&.default' : css({\n backgroundColor: variables.themeDefaultColor\n }),\n '&.red' : css({\n backgroundColor: variables.themeRedColor\n }),\n '&.orange' : css({\n backgroundColor: variables.themeOrangeColor\n }),\n '&.green' : css({\n backgroundColor: variables.themeGreenColor\n }),\n '&.blue' : css({\n backgroundColor: variables.themeBlueColor\n }),\n '&.yellow' : css({\n backgroundColor: variables.themeYellowColor\n }),\n '&.purple' : css({\n backgroundColor: variables.themePurpleColor\n }),\n '&.grey' : css({\n backgroundColor: variables.themeGreyColor\n }), \n //backgroundColor : '#77cf22',\n flex: '1 1 300px',\n transition: 'all .2s ease-in-out',\n color: '#ebebeb',\n position:'relative',\n '& .pageTile__bsyc__container' : mq({\n //position: 'absolute',\n position: ['static,',null,'absolute'],\n top: '50%',\n left:'50%',\n transform: ['none',null,'translate(-50%, -50%)'],\n width:['100%',null,'90%'],\n padding:['1rem',null,'0px'],\n '& .pageTile__bsyc__title' : {\n fontFamily: variables.familyHeader,\n fontSize: '2rem',\n //textTransform: 'uppercase',\n fontWeight: '800',\n lineHeight: '1',\n margin: '0',\n paddingTop: '.5rem',\n paddingBottom: '.5rem',\n color:'inherit'\n },\n '& .pageTile__bsyc__desc' : {\n lineHeight: '1.3',\n fontSize: '.9rem',\n //color: '#3d3d3d',\n minHeight: '70px',\n color:'inherit',\n fontWeight: 500\n }\n })\n })\n}","//import React from 'react';\nimport cmsUtils from '../../../cms/utils/cmsUtils';\nimport utils from '../../../utils';\nimport { SiteLink } from '../../../components';\n\n/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport style from './style';\n\nexport function PageTilesBsyc(props) {\n const item = props.item;\n //const detailHoverBgColor = props.detailHoverBgColor ? props.detailHoverBgColor : \"black\";\n const cmsOption = props.cmsOption || {};\n const pages = getPages(cmsUtils.payload(item, 'PageObjects'))\n const pageTileElts = pages.map((page, index) =>\n \n );\n\n //const cssClass = utils.classNames('cms_item', 'pageTiles tiles', item.cssClass || item.anchorName || '');\n const cssClass = utils.classNames('cms_item', 'pageTiles__bsyc', item.cssClass || item.anchorName || '');\n\n return (\n
\n {pageTileElts}\n
\n );\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nfunction Tile(props) {\n const page = props.page;\n //console.log(\"ddfsfdsfds\", page);\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n const colorTheme = page.colorTheme;\n const index = props.idx;\n return (\n \n
\n \n
\n\n
\n
\n
\n \n
\n
\n \n {\n (page.pageTitle && page.pageTitle !== '') &&\n
\n {page.pageTitle}\n
\n }\n\n
\n {page.tileDesc || page.description}\n
\n
\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\nfunction isDate(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n return !!date;\r\n }\r\n return false\r\n}\r\n\r\nfunction isPast(val) {\r\n if (val) {\r\n const date = utils.date.toDate(val);\r\n //console.log(date, typeof date)\r\n if (date){\r\n const now = new Date();\r\n return date.getTime() < now.getTime();\r\n }\r\n }\r\n return false\r\n}\r\n","import { createValidator, getNameForValidator } from '../validatorHelper';\r\n\r\nexport function Length(message = null, opt = null) {\r\n return createValidator('email', message, opt, function(control, e, validateOpt, validator) {\r\n if (validateOpt.triggeredByChange && control.incomplete) return null;\r\n return !isValidLength(control.value, validator) ? (message || (getNameForValidator(control.label, control.name) + ' - Invalid length.')) : null\r\n })\r\n}\r\n\r\n\r\nexport const isValidLength = (text, validator) => {\r\n const length = (text || '').length;\r\n if (validator.min && length < validator.min) return false;\r\n if (validator.max && length > validator.max) return false;\r\n return true;\r\n}\r\n","import { Required } from './validators/required';\r\nimport { Email } from './validators/email';\r\nimport { ValidateDate, PastDate } from './validators/date';\r\nimport { Length } from './validators/length';\r\n\r\nconst validateControl = (control, e, validateOpt) => {\r\n const errors = [];\r\n const validators = control.validators || [];\r\n for (let i = 0; i < validators.length; i++) {\r\n const validator = validators[i];\r\n if (!validator.disabled) {\r\n const error = validator.validate && validator.validate(control, e, validateOpt, validator);\r\n if (error) {\r\n errors.push(error);\r\n //console.log(error, control, validator, e)\r\n\r\n if (!validator.continueToValidate) break;\r\n }\r\n }\r\n }\r\n control.errors = errors;\r\n return errors;\r\n}\r\n\r\nexport default {\r\n Required, Email, Date: ValidateDate, PastDate, Length, validateControl\r\n}","import utils from '../../utils';\r\nimport React from 'react';\r\nimport { hasRequiredValidator } from './validatorHelper';\r\n\r\nexport function getLabel(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n return <>\r\n \r\n {requiredMark && {requiredMark}}\r\n ;\r\n}\r\n\r\nexport function getLabelAsString(control, formOption) {\r\n //console.log(label, label == null, label === null, name, label || name)\r\n const { label, name } = control\r\n const requiredMark = hasRequiredValidator(control) && (formOption.requiredMark || '*')\r\n if (label === null) return \"\";\r\n \r\n return (label || utils.text.toFieldName(name)) + (requiredMark ? requiredMark : '');\r\n}","import React from 'react';\r\n\r\nconst ValidationAlert = ({ errors }) => {\r\n if (!errors || errors.length === 0) return null;\r\n return
') }}>
\r\n}\r\n\r\nexport default ValidationAlert;","import * as React from 'react';\r\nimport ValidationAlert from '../components/ValidationAlert';\r\nimport utils from '../../../utils';\r\nimport { getLabel, getLabelAsString } from '../formRenderHelper';\r\n\r\nfunction TextInput({ control, handleChange, formOption }) {\r\n const { name, label, type, value, errors, style, helpText, attrs } = 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
\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 {helpText &&
}\r\n \r\n
\r\n\r\n )\r\n}\r\n\r\nexport default FileInput;","import TextInput from './TextInput';\r\nimport RadioListInput from './RadioListInput';\r\nimport TextareaInput from './TextareaInput';\r\nimport CheckboxInput from './CheckboxInput';\r\nimport CheckboxListInput from './CheckboxListInput';\r\nimport SelectInput from './SelectInput';\r\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 };","//#region GTM\r\nexport const hasGTM = () => {\r\n return !!(typeof window !== `undefined` && window.dataLayer);\r\n}\r\n\r\nexport const pageView = (url, pageTitle = null) => {\r\n if (!hasGTM()) return;\r\n\r\n const pageOpt = pageTitle ? {\r\n path: url,\r\n title: pageTitle\r\n } : { path: url }\r\n //console.log(url, pageOpt)\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: pageOpt\r\n })\r\n}\r\n\r\n// \r\nexport const sendEvent = (eventName, params) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: eventName }, params || {}))\r\n}\r\n\r\nexport const sendGAEvent = (category, action, label, value) => {\r\n if (!hasGTM()) return;\r\n window.dataLayer.push(Object.assign({ event: 'gaEvent' }, { category: category || '', action: action || '', label: label || '', value: value || '' }))\r\n}\r\n//#endregion\r\n\r\n\r\n","import React from 'react';\nimport env from 'env';\nimport { usePost } from 'components';\nimport { useForm } from 'form';\nimport { Button, ErrorMessage } from 'components';\nimport { getContactModel } from './contactFormModel';\nimport { gtm } from 'lib/tracking';\n\nexport function Contact(props) {\n const emailReceiver = props.emailReceiver;\n const model = getContactModel({});\n const form = useForm(model, { usePlaceholder: true });\n const [sendingStatus, setSendingStatus] = React.useState(null);\n const post = usePost();\n\n console.log(\"Check\");\n\n function onSubmit(e) {\n form.validateForm(e, () => {\n const value = { ...form.getValue(), emailReceiver: emailReceiver };\n post.send(env.apiBase + \"/api/contact/send\", value);\n setSendingStatus('pending')\n })\n console.log('submitting')\n }\n\n // if (status === 'done') {\n // //navigate(`/task/view/${taskId}`)\n // window.location.reload();\n // }\n\n if(post.done() && sendingStatus === 'pending'){\n var value = form.getValue();\n gtm.sendEvent('contactFormSubmitted', {contactEmail: value.email} )\n form.reset(model);\n setSendingStatus(null);\n }\n\n const render = (name) => form.renderControl(name, null);\n\n return (\n
\n
\n
{render('name')}
\n
{render('phone')}
\n
{render('email')}
\n
\n
\n
{render('enquiry')}
\n
\n
\n
\n
\n \n \n {post.status === 'done' && Successfully sent! }\n
\n
\n
\n
\n );\n}","import { fb, validators } from 'form';\n\nexport function getContactModel(data) {\n const model = fb.group({\n name: [data.name || '', [validators.Required()], { label: 'Name', type: 'text' }],\n phone: [data.phone || '', [validators.Required()], { label: 'Phone', type: 'text' }],\n email: [data.email || '', [validators.Required(), validators.Email()], { label: 'Email', type: 'email' }],\n enquiry: [data.enquiry || '', [validators.Required()], { label: 'Your Message', type: 'textarea' }]\n });\n \n return model;\n}","import React from 'react';\nimport cmsUtils from '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}","// https://www.pluralsight.com/guides/re-render-react-component-on-window-resize\r\nexport function debounce(fn, ms) {\r\n let timer\r\n return _ => {\r\n clearTimeout(timer)\r\n timer = setTimeout(_ => {\r\n timer = null\r\n fn.apply(this, arguments)\r\n }, ms)\r\n };\r\n}","import utils from '../../utils';\r\n\r\nexport function loadApi(onApiReady) {\r\n 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\nimport { FaRegPlayCircle } from 'react-icons/fa';\r\nimport ModalVideo from 'react-modal-video'\r\n\r\n\r\nexport function YoutubeBannerMobilePopup(props) {\r\n const youtubeBannerRef = React.useRef(null);\r\n\r\n const [playerStatus, setPlayerStatus] = useState('loading');\r\n const [playerSize, setPlayerSize] = useState(null);\r\n const [ytPlayer, setYtPlayer] = useState(null);\r\n const [muted, setMuted] = useState(true);\r\n const countPlayedRef = useRef(0);\r\n const [popupOpened, setPopupOpened] = useState(false);\r\n const { heightSet, videoLinkOrId, playerId } = props.video;\r\n const videoId = yt.getYoutubeCode(videoLinkOrId);\r\n //const posterImageUrl = yt.thumbnailMax(videoId);\r\n const posterImageUrl = (props.posterImageUrl && props.posterImageUrl !== '') ? props.posterImageUrl : yt.thumbnailMax(videoId);\r\n const mobileImageUrl = props.mobileImageUrl;\r\n //let countPlayed = 0;\r\n const canPlayVideo = () => (typeof window !== `undefined` && typeof props.canPlayVideo === `undefined`)? window.innerWidth >= 1200 : !!(typeof props.canPlayVideo === 'function'? props.canPlayVideo() : props.canPlayVideo);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 0,\r\n 'loop': 1,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n //console.log('videoId: ' + videoId)\r\n //const canPlayVideo = () => window.innerWidth >= 1200\r\n React.useEffect(() => {\r\n const resized = debounce(() => {\r\n loadVideo();\r\n });\r\n loadVideo();\r\n if (typeof window !== `undefined`)\r\n window.addEventListener('resize', resized)\r\n return () => {\r\n if (typeof window !== `undefined`)\r\n window.removeEventListener('resize', resized)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n \r\n function loadVideo() {\r\n if (youtubeBannerRef.current)\r\n setPlayerSize(getSize(youtubeBannerRef.current));\r\n if (canPlayVideo()) {\r\n yt.loadApi((loadJs) => {\r\n loadJs ? init() : setTimeout(init, 100)\r\n })\r\n }\r\n }\r\n\r\n function init() {\r\n let player = null;\r\n if (typeof window !== `undefined`) {\r\n player = new window.YT.Player(playerId, {\r\n events: {\r\n 'onStateChange': (e) => {\r\n switch (e.data) {\r\n // case window.YT.PlayerState.PLAYING:\r\n // break;\r\n // case window.YT.PlayerState.PAUSED:\r\n // break;\r\n case window.YT.PlayerState.ENDED:\r\n const countPlayed = countPlayedRef.current;\r\n if (countPlayed < 3 - 1) {\r\n //console.log('ended', countPlayed + 1);\r\n countPlayedRef.current = countPlayed + 1;\r\n if (player && player.playVideo)\r\n player.playVideo();\r\n } else {\r\n setPlayerStatus('finished');\r\n }\r\n break;\r\n default:\r\n }\r\n },\r\n 'onReady': (e) => {\r\n //console.log('onReady');\r\n if (player && player.mute && player.playVideo) {\r\n player.mute();\r\n player.playVideo();\r\n }\r\n setTimeout(() => setPlayerStatus('loaded'), 1000)\r\n },\r\n 'onError': (e) => { console.log(e) }\r\n }\r\n });\r\n\r\n setYtPlayer(player);\r\n }\r\n }\r\n\r\n function soundToggle(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (ytPlayer){\r\n if (muted) {\r\n setMuted(false);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.unMute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n } else {\r\n setMuted(true);\r\n setTimeout(() => {\r\n if (ytPlayer && ytPlayer.pauseVideo && ytPlayer.unMute && ytPlayer.playVideo) {\r\n ytPlayer.pauseVideo();\r\n ytPlayer.mute();\r\n ytPlayer.playVideo();\r\n }\r\n }, 100)\r\n }\r\n }\r\n\r\n //https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\r\n }\r\n\r\n function playVideo() {\r\n setPopupOpened(true)\r\n }\r\n\r\n const canPlay = canPlayVideo();\r\n const imageUrl = !canPlay && mobileImageUrl ? mobileImageUrl : posterImageUrl;\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {canPlay && playerSize && }\r\n {canPlay && playerStatus === 'loaded' &&
\r\n {muted? : }\r\n
}\r\n\r\n {!canPlay && !mobileImageUrl &&
\r\n \r\n
}\r\n
\r\n setPopupOpened(false)} />\r\n
\r\n );\r\n}\r\n\r\nfunction getSize(container) {\r\n const containerSize = container ? { w: container.offsetWidth, h: container.offsetHeight } : { w: window.innerWidth, h: window.innerHeight }\r\n const overSize = 1;\r\n const rate = 9 / 16;\r\n const w = containerSize.w * overSize;\r\n const h = containerSize.h * overSize;\r\n const size = { width: w, height: w * rate, left: 0, top: 0 };\r\n if (size.height < h) {\r\n // stretch horizontally\r\n size.height = h;\r\n size.width = h / rate;\r\n }\r\n\r\n //console.log(size)\r\n size.left = -(size.width - containerSize.w) / 2;\r\n size.top = -(size.height - containerSize.h) / 2;\r\n return size;\r\n}\r\n","import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\n//import { YoutubeBannerMobilePopup } from '../../../lib/youtube/youtubeBanner--mobilePopup';\n//import {BannerPanel} from '../bannerPanel/view';\n//import { YoutubeBanner } from '../../../components/youtubeBanner/youtubeBanner';\nimport { YoutubeBannerMobilePopup } from 'lib/youtube/youtubeBanner--mobilePopup';\n\nexport function YoutubeBannerPanel2(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\n const playerId = 'ytBanner-' + (item.itemId).substr(0, 8);\n\n const video = {\n heightSet: heightSet,\n videoLinkOrId: videoCode,\n playerId: playerId\n }\n\n //const enableYoutube = env.isProd;\n //const canPlayVideo = () => utils.css.screenWidth() >= 1200\n //const canPlayVideo = () => window.innerWidth >= 1200\n const canPlayVideo = () => utils.css.screenWidth() >= 1200\n\n const cssClass = utils.classNames('cms_item', 'youtubePanel', heightSet, item.cssClass || item.anchorName || '');\n\n //console.log(window.innerWidth, canPlayVideo())\n\n return (\n
\n {/* {canPlayVideo() ? : } */}\n \n
\n );\n\n // return (\n //
\n //
\n // {canPlayVideo() ? : }\n // {/* \n // {false && } */}\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 { YoutubeEmbed } from 'components';\n\nexport function YoutubeEmbedded(props) {\n const item = props.item;\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item);\n\n // const heightSet = cmsUtils.payload(item, 'HeightSet') || 'standard';\n const videoCode = cmsUtils.payload(item, 'YoutubeCode');\n\n const cssClass = utils.classNames('cms_item', 'youtubeEmbedded', item.cssClass || item.anchorName || '');\n\n //console.log(window.innerWidth, canPlayVideo())\n\n return (\n
\n \n
\n );\n}\n","import React from 'react';\nimport env from 'env';\nimport { SiteLink} from 'components';\nimport { usePost } from 'components';\nimport { ErrorPopup, Loading } from 'components';\nimport { useRouter } from 'components';\nimport { AtdwSearchResultWithSite } from '../atdw/index';\n\nexport function SearchResult(props) {\n \n const { query } = useRouter();\n const post = usePost();\n const keyword = query.q;\n //console.log(keyword);\n\n React.useEffect(() => {\n post.send(env.apiBase + '/api/search/search', { keyword: keyword });\n // eslint-disable-next-line\n }, [keyword]);\n\n if (post.loading()) {\n return \n } else if (post.hasErrors()) {\n return \n }\n //console.log(\"post\", post)\n const data = post.response;\n //const products = data.products;\n const pages = data.pages;\n const atdw = data.atdw;\n\n //console.log('data', data);\n\n // if (pages.length === 0) return (\n //
\n // No result found.\n //
\n // )\n return (\n <>\n {pages.length > 0 ?
\n

Pages

\n \n
: (!atdw.length > 0 &&\n
\n No result found.\n
) \n }\n {\n atdw.length > 0 ?\n
\n

ATDW

\n \n
: (!pages.length > 0 &&\n
\n No ATDW result found.\n
)\n }\n \n );\n}\n\n// function ProductList({products}) {\n// return (\n//
\n// {products.map((product, index) =>\n// \n// )}\n//
\n// );\n// }\n\nfunction PageList({pages}) {\n return (\n
\n {pages.map((page, index) =>\n
\n
\n {page.pageTitle}\n
\n
\n
\n )}\n
\n );\n}","import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { SearchResult } from 'site/searchResult/searchResult';\nimport { InstagramFeed } from 'components';\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\n if (codeJson.control === 'search-results'){\n controls = \n } else if(codeJson.control === 'app'){\n controls = \n } else if (codeJson.control === 'instagram') {\n controls = \n }\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}","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(\n cmsUtils.payload(item, \"NumOfTileLines\", \"2\")\n );\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 // eslint-disable-next-line\n const step = numOfPost;\n // console.log(bp, numOfTileLines, tilesPerLine, numOfPost);\n // eslint-disable-next-line\n const [tilesToShow, setTilesToShow] = React.useState(numOfPost);\n\n // const displayingPosts =\n // posts.length > tilesToShow ? posts.slice(0, tilesToShow) : posts;\n const displayingPosts = posts.length > tilesToShow ? posts : posts;\n // const showMore = posts.length > displayingPosts.length;\n\n const pageTileElts = displayingPosts.map((page, index) => (\n \n ));\n\n const cssClass = utils.classNames(\n \"cms_item\",\n \"blogTiles tiles\",\n item.cssClass || item.anchorName || \"\"\n );\n\n return (\n <>\n \n {pageTileElts}\n \n {/* {showMore && (\n
\n {\n setTilesToShow(tilesToShow + step);\n }}\n >\n LOAD MORE\n \n
\n )} */}\n \n );\n}\n\nfunction getPages(pagesSerialized) {\n if (pagesSerialized) {\n return JSON.parse(pagesSerialized);\n }\n return [];\n}\n\nfunction Tile(props) {\n const page = props.page;\n const imageUrl = utils.site.resourcePath(page.imageUrl);\n const disableLink = props.disableLink;\n const postDate = utils.date.formatDDMMYYYY(page.postDate);\n\n return (\n
\n \n
\n
\n
\n
{page.pageTitle}
\n
\n
{postDate}
\n
\n {page.tileDesc || page.description}\n
\n
READ MORE
\n
\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 const postDate = cmsUtils.payload(item, 'PostDate');\n\n const cssClass = utils.classNames('blogView__titleContainer', 'cms_item', item.cssClass || item.anchorName || '');\n\n return (\n
\n
\n {postDate}\n
\n

\n {title}\n

\n
\n );\n}\n","import React from 'react';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport { Item } from 'cms/items/item';\nimport utils from 'utils';\n\nexport function MultiColumnPanel(props){\n const item = props.item;\n const mobileReverse = cmsUtils.payload(item, 'MobileReverse', 'no');\n //const subItems = item.items || [];\n const subItems = (mobileReverse === \"yes\" && 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}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { FaChevronDown } from \"react-icons/fa\";\nimport 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';\n\nexport function ExpandableHtml(props) {\n const cmsOption = props.cmsOption || {};\n const [open, setOpen] = React.useState(cmsOption.isCmsEdit);\n const ver = env.ver;\n const item = props.item;\n //const subItems = item.items || [];\n const { history } = useRouter();\n //console.log('item', item, cmsOption);\n //console.log(open)\n let content = cmsUtils.payload(item, 'Content').replace(\"__version__\", \" PWA \"+ ver +\"\");\n \n const buttonTitle = cmsUtils.payload(item, 'ButtonTitle');\n\n\n const cssClass = utils.classNames('cms_item', 'htmlPanel exHtml', cmsOption.isCmsEdit && 'html', item.cssClass || item.anchorName || '');\n\n //let itemElt = (
);\n\n function handleClick(e) { \n \n let target = \"\";\n if(e.target.closest('a')){\n target = e.target.closest('a').getAttribute('target');\n }\n const processed = (target === \"_blank\" ? handleElementLink(e.target, null) : handleElementLink(e.target));\n //const link = utils.url.getLinkFromElement(e.target);\n //console.log('clicked', e, e.target, processed);\n \n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n } else if (processed.linkInfo && processed.linkInfo.type === 'internal') {\n e.preventDefault();\n e.stopPropagation();\n history.push(processed.linkInfo.url)\n } else {\n // e.preventDefault();\n // e.stopPropagation();\n // setPdfViewPath(utils.site.resourcePath(link))\n }\n }\n\n const htmlBlock = useRef(null);\n // function iframeSizer() {\n // //console.log('iframesizer')\n // let iframesContainer = htmlBlock.current.querySelectorAll('iframe.youtube, .ytvideo iframe');\n // //console.log('iframesizer', iframesContainer)\n // if (iframesContainer && iframesContainer.length) {\n // iframesContainer.forEach(element => {\n // let height = (element.parentElement.offsetWidth * 9) / 16\n // //console.log(height, element.parentElement.offsetWidth)\n // element.style.height = height + 'px';\n // });\n // }\n // }\n\n useLayoutEffect(() => {\n const buttons = htmlBlock.current.querySelectorAll('.button');\n for (let i = 0; buttons && i < buttons.length; i++) {\n restructureButton(buttons[i])\n }\n\n // const youtubes = htmlBlock.current.querySelectorAll('iframe[src*=\"youtube\"]');\n // console.log(youtubes)\n\n // iframeSizer();\n // window.addEventListener('resize', iframeSizer)\n // return (): void => {\n // window.removeEventListener('resize', iframeSizer)\n // }\n\n }, [])\n\n\n const style = {\n icon: {\n marginLeft: '0.5rem',\n width: 'auto !important',\n fontSize: '80%',\n transition: 'all 0.5s'\n },\n iconOpen: {\n transform: 'translateY(-0.1rem) rotate(-180deg)'\n },\n iconClosed: {\n transform: 'translateY(-0.1rem) rotate(0)'\n },\n panelCollapsed: {\n maxHeight: 0,\n transition: 'all 0.6s',\n opacity: 0,\n overflow: 'hidden'\n },\n panelOpen: {\n opacity: 1,\n maxHeight: '2000px',\n transition: 'all 1s'\n }\n }\n\n const toggleExPanel = (e) => {\n e.preventDefault()\n e.stopPropagation()\n setOpen(!open)\n }\n\n\n if (cmsOption.isCmsEdit)\n return (\n
handleClick(e)}>\n
\n {e.preventDefault(); e.stopPropagation();}}>{buttonTitle} \n
To edit the button title, please double click or open item editor
\n
\n \n
\n
\n )\n\n return (\n
handleClick(e)}>\n \n \n
\n
\n )\n}\n\n\nfunction restructureButton(el) {\n if (!el.querySelector('span')) {\n const span = document.createElement('span');\n span.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(span);\n }\n}","//import { css, keyframes } from '@emotion/core'\n//import { variables, mq } from 'cssInJs'\n\nimport { css } from '@emotion/core'\n//import { mq } from 'cssInJs'\n\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 }),\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 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';\n//import { PageTiles } from 'cms/items/pageTiles/view';\n//import { PageTileAdore } from 'components/pageTileAdore/view';\nimport { PageTileJ5 } from 'components/pageTileJ5/view';\nimport { PageTilesBsyc } from '../../components/tiles/bsyc/view';\nimport { SingleBanner } from 'cms/items/singleBanner/view';\nimport { ContactForm } from 'cms/items/contactForm/view';\n//import { YoutubeBannerPanel } from 'cms/items/youtubeBannerPanel/view';\nimport { YoutubeBannerPanel2 } from 'cms/items/youtubeBannerPanel2/view';\nimport { YoutubeEmbedded } from 'cms/items/youtubeEmbedded/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 'cms/items/multiColumnPanel/view';\nimport { ExpandableHtml } from 'cms/items/expandableHtml/view';\nimport { AtdwSearch, AtdwMap } from 'site/atdw/index';\nimport { PhotoGallery } from 'components/photoGallery/view';\nimport cmsUtils from '../utils/cmsUtils'\n\nexport function Item(props) {\n const item = props.item;\n //const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n\n //console.log('item', item, subItems, cmsOption);\n\n let itemElt = (<>);\n if (item.itemTypeCode === 'Panel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Html') {\n itemElt = ();\n } else if (item.itemTypeCode === 'BannerPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'BannerItem') {\n itemElt = ();\n } else if (item.itemTypeCode === 'TestimonialPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'TestimonialItem') {\n itemElt = ();\n } else if (item.itemTypeCode === 'ImagePanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'PageTiles') {\n let _tileType = cmsUtils.payload(item, 'TileType');\n const tileType = (_tileType && _tileType !== '') ? _tileType : '2';\n if(tileType === \"2\"){\n itemElt = ();\n }\n else{\n itemElt = ();\n }\n //itemElt = ();\n }\n else if (item.itemTypeCode === 'SingleBanner') {\n itemElt = ();\n } else if (item.itemTypeCode === 'ContactForm') {\n itemElt = ();\n } \n else if (item.itemTypeCode === 'YoutubeBannerPanel') {\n itemElt = ();\n }\n else if (item.itemTypeCode === 'VideoPanel') {\n itemElt = ();\n } \n else if (item.itemTypeCode === 'YoutubeEmbedded') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Code') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Blog-Posts') {\n itemElt = ();\n } else if (item.itemTypeCode === 'Blog-PostTitle') {\n itemElt = ();\n } else if (item.itemTypeCode === 'MultiColumnPanel') {\n itemElt = ();\n } else if (item.itemTypeCode === 'ExpandableHtml') {\n itemElt = ();\n } else if (item.itemTypeCode === 'AtdwSearch') {\n itemElt = ();\n } else if (item.itemTypeCode === 'AtdwMap') {\n itemElt = ();\n } else if (item.itemTypeCode === 'PhotoGallery') {\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}","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';\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.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\n const menuData = get.response.menu;\n const cmsOption = {};\n log(pageLoaded, !pageLoaded && !!pageData)\n if (!pageLoaded && pageData) {\n //log(pageLoaded, pageData, menuData)\n log('2. dispatching page & menu')\n setPageLoaded(true);\n //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 React, { useState, useEffect } from 'react';\nimport { useGet } from 'components';\nimport { Item } from 'cms/items/item';\nimport { NotFound } from 'components';\nimport env from 'env';\nimport { ErrorPopup } from 'components';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function AtdwPagePartial() {\n const [pageLoaded, setPageLoaded] = useState(false);\n const pathname = '/partials/common-atdw-page-bottom';\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('1. viewpage component', pageLoaded, get.response);\n\n\n const pageData = get.response.data;\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 return null;\n } else if (!pageData) {\n return ()\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}","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { useState, useEffect, Fragment, useRef, useCallback } from 'react';\nimport env from 'env';\nimport { useRouter } from 'components';\nimport Slider from \"react-slick\";\nimport style from './style';\nimport { MdDirections, MdCall, MdWeb, MdBook } from \"react-icons/md\";\n//import { SiteLink } from 'components';\nimport Collapsible from 'react-collapsible';\nimport { ViewPartial } from 'cms/pages/partials/viewPartial';\nimport { MetaTag } from 'components';\nimport utils from 'utils';\nimport { gtm } from 'lib/tracking';\nimport { AtdwPagePartial } from '../../../cms/pages/partials/atdwPagePartial';\n\nfunction AtdwPageBaner(props){\n const multimedia = props.multimedia;\n //console.log(\"aa\", multimedia);\n const communication = props.communication;\n const _com = {phone : '', website : '', book : ''};\n \n communication.forEach(el => {\n if(el.attributeIdCommunicationDescription === 'Primary Phone'){\n _com.phone = el.communicationDetail;\n }\n else if(el.attributeIdCommunicationDescription === 'URL Enquiries'){\n _com.website = el.communicationDetail.includes(\"http\") ? el.communicationDetail : 'https://' + el.communicationDetail;\n }\n else if(el.attributeIdCommunicationDescription === 'Booking URL'){\n _com.book = el.communicationDetail.includes(\"http\") ? el.communicationDetail : 'https://' + el.communicationDetail;\n }\n });\n\n let va = [];\n const abc = [];\n let checkImageType = false;\n\n // for(var i = 0; i < multimedia.length; i++){\n // if(i === 0){\n // va.push(());\n // }\n // else{\n // if(multimedia[i-1].multimediaId === multimedia[i].multimediaId){\n // va.push(());\n // }\n // else{\n // checkImageType = true;\n // let _images = va;\n // va = [];\n // abc.push(( \n //
\n // \n // {_images}\n // \"image2\"/\n // \n //
));\n // va.push(());\n // }\n\n // if(i === (multimedia.length - 1) && checkImageType === false){\n // let _images = va;\n // va = [];\n // abc.push(( \n //
\n // \n // {_images}\n // \"image2\"/\n // \n //
));\n // va.push(());\n // }\n // }\n // }\n\n for(var i = 0; i < multimedia.length; i++){\n\n if(i === 0 ){\n if(multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(multimedia[i].width) >= 800){\n va.push(());\n }\n }\n else{\n if(multimedia[i-1].multimediaId === multimedia[i].multimediaId){\n if(multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(multimedia[i].width) >= 800){\n va.push(());\n } \n }\n else{\n checkImageType = true;\n let _images = va;\n va = [];\n abc.push(\n
\n \n {_images}\n \"image2\"/\n \n
);\n\n if(multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(multimedia[i].width) >= 800){\n va.push(());\n }\n }\n\n if(i === (multimedia.length - 1) && checkImageType === false){\n let _images = va;\n va = [];\n abc.push(( \n
\n \n {_images}\n \"image2\"/\n \n
));\n if(multimedia[i].attributeIdMultimediaContent === 'IMAGE' &&\n multimedia[i].attributeIdSizeOrientation === '4X3' &&\n parseInt(multimedia[i].width) >= 800){\n va.push(());\n }\n }\n }\n }\n\n const settings = {\n dots: false,\n infinite: true,\n speed: 1500,\n autoplaySpeed: 3000,\n fade: true,\n autoplay: true,\n slidesToShow: 1,\n slidesToScroll: 1\n };\n\n // const goOpenLocation = ((e) => {\n \n // });\n\n return(\n
\n \n { abc }\n \n
\n {\n _com.phone === '' ? null : (\n \n \n
PHONE
\n
\n )\n }\n\n
{\n props.onCheckOpen();\n document.getElementById('atdwPageLocation').scrollIntoView({behavior:'smooth', block:'center'});\n }}>\n \n
LOCATION
\n
\n\n {\n _com.website === '' ? null : (\n \n \n
WEBSITE
\n
\n )\n }\n\n {\n _com.book === '' ? null : (\n \n \n
BOOKINGS
\n
\n )\n }\n
\n
\n )\n}\n\nfunction AtdwContactDetails(props){\n\n const communication = props.communication;\n //const entity_fac = [];\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\nfunction 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 attributes = props.attributes;\n const entity_fac = [];\n for(var i in attributes){\n if(attributes[i].attributeTypeId === \"ENTITY FAC\"){\n entity_fac.push(\n
\n {attributes[i].attributeIdDescription}\n
\n )\n }\n }\n\n return( \n \n
\n {entity_fac}\n
\n
\n )\n}\n\nfunction AtdwLocation(props){\n const addresses = props.addresses;\n const productName = props.productName;\n const geoCode = { lat : 0, lng : 0};\n const ele = useRef(null);\n //const [open, setOpen] = useState(false);\n\n for(var i in addresses){\n if(addresses[i].attributeIdAddress === \"PHYSICAL\"){\n geoCode.lat = Number(addresses[i].geocodeGdaLatitude);\n geoCode.lng = Number(addresses[i].geocodeGdaLongitude);\n break;\n }\n }\n\n useEffect(() => {\n \n let checkScript = true;\n const script = document.createElement('script');\n if(window['google'] === undefined){\n checkScript = false;\n }\n else{\n if(window['google'].maps === undefined){\n checkScript = false;\n }\n }\n\n if(!checkScript){ \n script.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyDdeE10fagsW-TTheuB3W-kGvkVTFe3NyY';\n script.async = true;\n document.body.appendChild(script);\n }\n\n return () =>{\n if(!checkScript){\n document.body.removeChild(script);\n }\n }\n\n }, [productName, geoCode]);\n\n return(\n \n
{\n props.onCheckOpen();\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 console.log(marker);\n marker = new window.google.maps.Marker({\n position: {lat: geoCode.lat, lng: geoCode.lng},\n map: map,\n title:productName\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 Country',\n url: utils.site.resourcePath('/atdwproduct/' + slug)\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n }\n}\n\nexport function AtdwPage(props){\n //const AtdwPageContext = React.createContext(null);\n const slug = useRouter().query.slug;\n\n const [atdwProduct, setAtdwProduct] = useState({\n product : null,\n themeColor : props.onChangeThemeColor\n });\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 useEffect(() => { \n const fetchData = async () => {\n const res = await fetch(env.apiBase + \"/api/atdw/getproduct/\" + slug);\n const data = await res.json();\n //setProduct(data.product);\n let themeColor = '';\n if(data.product.productCategoryId === 'ACCOMM'){\n themeColor = 'yellow';\n }\n else if(data.product.productCategoryId === 'RESTAURANT'){\n themeColor = 'orange';\n }\n else if(data.product.productCategoryId === 'ATTRACTION'){\n themeColor = 'blue';\n }\n else if(data.product.productCategoryId === 'EVENT'){\n themeColor = 'green';\n }\n else if(data.product.productCategoryId === 'HIRE'){\n themeColor = 'red';\n }\n else if(data.product.productCategoryId === 'GENSERVICE'){\n themeColor = 'lightgreen';\n }\n else if(data.product.productCategoryId === 'TOUR'){\n themeColor = 'lightblue';\n }\n\n setAtdwProduct(pre => {\n let _new = {...pre};\n _new.product = data.product;\n _new.themeColor('theme--' + themeColor);\n return _new;\n });\n };\n fetchData();\n }, [slug]);\n\n function GetDes(prop){\n let _texts = prop.text.split(\"\\n\");\n return (\n _texts.map((text, index) =>

{text}

)\n )\n }\n const [checkOpen, setCheckOpen] = useState(false);\n\n const onCheckOpen = useCallback(()=>{\n setCheckOpen(!checkOpen);\n }, [checkOpen]);\n\n return( \n \n {\n atdwProduct.product ? \n
\n \n \n
\n
\n
\n

{ atdwProduct.product.cityName}

\n

{ atdwProduct.product.productName}

\n
\n
\n \n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n
\n
: null\n }\n \n \n
\n )\n}\n\n//Sample\n// const abc = multimedia.map((item, index) => {\n // if(index === 0){\n // va.push(());\n // }\n // else{\n // if(multimedia[index-1].multimediaId === item.multimediaId){\n // va.push(());\n // }\n // else{\n // let _images = va;\n // va = [];\n // //setImages([])\n // return( \n //
\n // \n // {_images}\n // \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:'4px',\n fontSize:'0.6rem'\n },\n '.btn.selected' : {\n backgroundColor : '#89732a',\n borderColor: '#89732a'\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 button : css({\n fontWeight: '700'\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 [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 trigger:0,\n fetchAble:true,\n data : []\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 abortController = new AbortController();\n const signal = abortController.signal;\n let checkScript = true;\n const script = document.createElement('script');\n const fetchData = async () =>{\n const res = await fetch(env.apiBase + \"/api/atdw/getproductsformap/\" + mapSate.currentFilterType, {signal:signal});\n const data = await res.json();\n if(window['google'] === undefined){\n checkScript = false;\n }\n else{\n if(window['google'].maps === undefined){\n checkScript = false;\n }\n }\n \n if(!checkScript){\n script.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyDdeE10fagsW-TTheuB3W-kGvkVTFe3NyY';\n script.async = true;\n document.body.appendChild(script);\n setTimeout(() => {\n setMapSate(pre=>{\n let _new = {...pre};\n _new.fetchAble = false;\n \n let items = [];\n _new.data = data.results.productResult.products;\n items = _new.data;\n \n let center = {lat: -34.3420612, lng: 138.9141141};\n let zoom = 9;\n \n var map = new window.google.maps.Map(el.current, {\n center: center,\n zoom: zoom\n });\n \n items.forEach(_el => {\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 });\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 return _new;\n });\n }, 1000);\n }\n else{\n setMapSate(pre=>{\n let _new = {...pre};\n _new.fetchAble = false;\n \n let items = [];\n _new.data = data.results.productResult.products;\n items = _new.data;\n \n let center = {lat: -34.3420612, lng: 138.9141141};\n let zoom = 9;\n \n var map = new window.google.maps.Map(el.current, {\n center: center,\n zoom: zoom\n });\n \n items.forEach(_el => {\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 });\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 return _new;\n });\n } \n }\n fetchData();\n return function cleanup(){\n abortController.abort();\n if(!checkScript){\n document.body.removeChild(script);\n }\n }\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 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 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'\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 marginTop: '0.2rem'\n }),\n expendablePanel : css({\n marginTop: '1rem',\n '&.open' : {\n '.exPanelTitle svg' : {\n transform:'translateY(-50%) rotate(180deg)'\n },\n '.expendablePanelContent' : {\n opacity: '1',\n //height: '100%'\n height: 'auto'\n }\n }\n }),\n expendablePanelTitle : css({\n borderBottom: '1px solid black',\n cursor:'pointer',\n position:'relative',\n 'svg' : {\n position:'absolute',\n right:'0px',\n top:'50%',\n transform: 'translateY(-50%)',\n transition: 'all 0.2s ease-in-out'\n }\n }),\n expendablePanelContent : css({\n transition: 'opacity 1s ease-out !important',\n opacity: '0',\n height: '0',\n overflow:'hidden'\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';\nimport { useEffect, useState, Fragment } from 'react';\nimport { MdArrowDropDownCircle } from \"react-icons/md\";\n\nexport function AtdwSearchResultWithSite(props){\n\n const atdwDatas = props.atdwData || [];\n \n const [atdw, setAtdw] = useState();\n const [open, setOpen] = useState({\n accom : false, attraction : false,\n destinfo : false, restaurant : false,\n event :false, info : false, hire : false,\n genservice:false, tour:false\n });\n\n useEffect(()=>{\n const _atdw = {\n accomm : [],\n attraction : [],\n destinfo : [],\n restaurant : [],\n event :[],\n info:[],\n hire :[],\n genservice :[],\n tour:[]\n };\n atdwDatas.forEach(el => {\n switch(el.productType){\n case 'ACCOMM' :\n _atdw.accomm.push(el);\n break;\n case 'ATTRACTION' :\n _atdw.attraction.push(el);\n break;\n case 'DESTINFO' :\n _atdw.destinfo.push(el);\n break;\n case 'RESTAURANT' :\n _atdw.restaurant.push(el);\n break;\n case 'EVENT' :\n _atdw.event.push(el);\n break;\n case 'INFO' :\n _atdw.info.push(el);\n break;\n case 'HIRE' :\n _atdw.hire.push(el);\n break;\n case 'GENSERVICE' :\n _atdw.genservice.push(el);\n break;\n case 'TOUR' :\n _atdw.tour.push(el);\n break;\n default:\n }\n });\n setAtdw(_atdw);\n }, [atdwDatas]);\n\n return(\n
\n {\n atdw &&\n \n {\n atdw.accomm.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.accom){\n //setOpen(false);\n setOpen({...open, accom : false});\n }\n else{\n setOpen({...open, accom : true});\n }\n }}>\n {'ACCOMMODATION (' + atdw.accomm.length +')'}\n \n
\n
\n
\n { atdw.accomm.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.attraction.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.attraction){\n //setOpen(false);\n setOpen({...open, attraction : false});\n }\n else{\n setOpen({...open, attraction : true});\n }\n }}>\n {'ATTRACTIONS (' + atdw.attraction.length +')'}\n \n
\n
\n
\n { atdw.attraction.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.destinfo.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.destinfo){\n //setOpen(false);\n setOpen({...open, destinfo : false});\n }\n else{\n setOpen({...open, destinfo : true});\n }\n }}>\n {'TOWN (' + atdw.destinfo.length +')'}\n \n
\n
\n
\n { atdw.destinfo.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.restaurant.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.restaurant){\n //setOpen(false);\n setOpen({...open, restaurant : false});\n }\n else{\n setOpen({...open, restaurant : true});\n }\n }}>\n {'EATING OUT (' + atdw.restaurant.length +')'}\n \n
\n
\n
\n { atdw.restaurant.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.event.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.event){\n //setOpen(false);\n setOpen({...open, event : false});\n }\n else{\n setOpen({...open, event : true});\n }\n }}>\n {'EVENT (' + atdw.event.length +')'}\n \n
\n
\n
\n { atdw.event.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.hire.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.hire){\n //setOpen(false);\n setOpen({...open, hire : false});\n }\n else{\n setOpen({...open, hire : true});\n }\n }}>\n {'HIRE (' + atdw.hire.length +')'}\n \n
\n
\n
\n { atdw.hire.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.info.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.info){\n //setOpen(false);\n setOpen({...open, info : false});\n }\n else{\n setOpen({...open, info : true});\n }\n }}>\n {'INFO (' + atdw.info.length +')'}\n \n
\n
\n
\n { atdw.info.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.tour.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.tour){\n //setOpen(false);\n setOpen({...open, tour : false});\n }\n else{\n setOpen({...open, tour : true});\n }\n }}>\n {'TOUR (' + atdw.tour.length +')'}\n \n
\n
\n
\n { atdw.tour.map((item, index) =>\n \n )}\n
\n
\n
\n }\n {\n atdw.genservice.length > 0 &&\n
\n
{\n e.preventDefault();\n e.stopPropagation();\n if(open.genservice){\n //setOpen(false);\n setOpen({...open, genservice : false});\n }\n else{\n setOpen({...open, genservice : true});\n }\n }}>\n {'GENERAL SERVICE (' + atdw.genservice.length +')'}\n \n
\n
\n
\n { atdw.genservice.map((item, index) =>\n \n )}\n
\n
\n
\n }\n \n
\n } \n
\n )\n}","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport utils from 'utils';\n//import { handleElementLink } from './handleLink';\nimport { handleElementLink } from '../../lib/router/handleLink';\nimport { AtdwContext } from '../../site/atdw/index';\n\nexport function SiteLink(props) {\n const { children, to, target, onClick, back, ...other } = props;\n const _atdwContext = React.useContext(AtdwContext);\n\n function goToLink(e) {\n //console.log(e, e.target);\n if(!back){\n _atdwContext.setupAtdwDataHistory2(null);\n }\n \n if (onClick) onClick(e);\n const processed = handleElementLink(e.target);\n if (processed.handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n //console.log(processed)\n }\n\n return utils.url.isExternalLink(to) ?\n goToLink(e)} {...other}>{children}\n :\n goToLink(e)} {...other}>{children}\n ;\n}","import { css } from '@emotion/core'\r\nimport { mixin, mq } from '../../cssInJs'\r\n\r\nexport default {\r\n tiles: css(mq({\r\n marginLeft: [0, -5, null, -10],\r\n marginRight: [0, -5, null, -10],\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexWrap: 'wrap'\r\n })),\r\n tile: css(mq({\r\n flexBasis: ['50%', '33.33%', '25%', '25%', '20%', '16.66%'],\r\n padding: [0, 5, null, 10],\r\n cursor: 'pointer'\r\n })),\r\n tileImage: css({\r\n position: 'relative',\r\n display: 'block',\r\n ':after': { ...mixin.overlay() },\r\n ':hover, :focus': {\r\n ':after': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n }\r\n }\r\n }),\r\n tileIcon: css({\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n fontSize: 30,\r\n color: 'white',\r\n zIndex: 1\r\n })\r\n}","import React from 'react';\r\n/** @jsx jsx */\r\nimport { jsx } from '@emotion/core'\r\nimport env from '../../env';\r\nimport utils from '../../utils';\r\nimport { useGet, ErrorPopup, Loading } from '../../components';\r\nimport style from './feedStyle';\r\nimport {FaRegCaretSquareRight, FaRegClone} from 'react-icons/fa';\r\n\r\nexport function InstagramFeed(props){\r\n const get = useGet();\r\n\r\n React.useEffect(() => {\r\n get.send(env.apiBase + `/api/instagram/GetInstagramFeeds`);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (get.loading()) {\r\n return \r\n } else if (get.hasErrors()) {\r\n return \r\n }\r\n\r\n // console.log(get)\r\n const data = get.response;\r\n if (data.length === 0) return null\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Feeds({posts}) {\r\n const numOfTileLines = 2;\r\n const bp = utils.ui.getCurrentBreakpoint();\r\n const tilesPerLine = {xs:2, sm:3, md:4, lg:4, xl:5, xxl:6}\r\n const numOfPost = numOfTileLines * (tilesPerLine[bp] || 6);\r\n console.log(bp, numOfTileLines, numOfPost)\r\n const displayingPosts = posts.length > numOfPost ? posts.slice(0, numOfPost) : posts;\r\n\r\n return (\r\n
\r\n {displayingPosts.map((item, index) =>\r\n )}\r\n
\r\n )\r\n}\r\n\r\nfunction Feed({item}) {\r\n return (\r\n \r\n )\r\n}","import React from 'react';\r\nimport utils from '../../utils';\r\nimport * as yt from './iframeApi';\r\n\r\nexport function YoutubeEmbed({ url, title }) {\r\n const videoId = yt.getYoutubeCode(url);\r\n //const posterImageUrl = yt.thumbnailMax(videoId);\r\n\r\n const playerVars = {\r\n 'enablejsapi': 1,\r\n //'autoplay': 1,\r\n 'controls': 1,\r\n 'loop': 0,\r\n 'showinfo': 0,\r\n 'rel': 0,\r\n 'modestbranding': 1,\r\n //'origin': typeof window !== `undefined` && window.location.origin,\r\n 'allowfullscreen': true,\r\n 'wmode': 'transparent'\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","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';\nimport { ErrorPopup, Loading } from 'components';\nimport { useInstagram } from 'components';\nimport { MetaTag } from 'components';\nimport cmsUtils from 'cms/utils/cmsUtils';\nimport utils from 'utils';\nimport { gtm } from 'lib/tracking';\n\nconst log = (...args) => {\n //console.log(args);\n}\nconst areEqual = (prevProps, nextProps) => {\n return (prevProps.pageData === nextProps.pageData)\n};\nconst PageMemo = React.memo(Page, areEqual)\n\nexport function ViewPage(props) {\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 } = useRouter();\n useInstagram();\n\n const get = useGet();\n log('0. viewpage ready');\n\n useEffect(() => {\n log('*. start loading')\n setPageLoaded(false);\n get.send(env.apiBase + \"/api/cms/GetPublishedPage?path=\" + pathname);\n // eslint-disable-next-line\n }, [pathname]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //log(router.pathname);\n //log(get.loading());\n log('1. viewpage component', pageLoaded, get.response);\n\n const pageData = get.response.data;\n //console.log(\"page\", pageData);\n\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 gtm.pageView(pathname, pageData.pageTitle);\n return null;\n } else if (!pageData) {\n return ()\n }\n \n //console.log(\"viewPage\", cmsUtils.payload(pageData, 'ColorTheme'), pageData);\n props.onChangeThemeColor('theme--' + (cmsUtils.payload(pageData, 'ColorTheme') ? cmsUtils.payload(pageData, 'ColorTheme') : 'default')); \n log('3. call rendering memo');\n return ;\n}\n\nfunction Page(props) {\n const pageData = props.pageData;\n const cmsOption = props.cmsOption;\n // document.title = pageData.pageTitle;\n log('4. page rendering', pageData, cmsOption);\n const sectionItems = pageData.sections.map((section, index) => {\n return (\n
\n )\n }\n );\n return (\n <>\n \n {/* theme--${cmsUtils.payload(pageData, 'Theme')} */}\n
\n {sectionItems}\n
\n \n );\n}\n\nfunction Section(props) {\n log('5. section rendering')\n const item = props.item;\n //const sectionName = item.sectionName;\n const subItems = item.items || [];\n const cmsOption = props.cmsOption || {};\n if (!subItems || subItems.length === 0)\n return (<>);\n\n const subItemsElts = subItems.map((subItem, index) =>\n \n );\n return (\n <>\n {subItemsElts}\n \n );\n}\n\nfunction getMetaTag(pageData) {\n const country = utils.site.isNZ? 'New Zealand' : 'Australia'\n const siteName = env.siteName + ' ' + country;\n const titleSuffix = env.titleSuffix;\n\n return {\n title: pageData.pageTitle + ' | ' + titleSuffix,\n description: cmsUtils.payload(pageData, 'Description'),\n keywords: cmsUtils.payload(pageData, 'Keyword'),\n heroImageUrl: utils.site.resourcePath(cmsUtils.payload(pageData, 'ImageUrl')),\n language: 'English',\n country: country,\n siteName: siteName,\n url: utils.site.resourcePath(pageData.pageUrl),\n //canonical: utils.site.resourcePath(pageData.pageUrl)\n }\n}","import React from 'react';\r\nimport { loadJs } from '../../lib/net-loader';\r\n\r\nexport function useInstagram() {\r\n const [embedStatus, setEmbedStatus] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n loadEmbedJs()\r\n })\r\n\r\n function loadEmbedJs() {\r\n if (typeof window !== `undefined`) {\r\n //console.log('instgrm effect', embedStatus, window.instgrm);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n }\r\n else if (!embedStatus && embedStatus !== 'loading') {\r\n setEmbedStatus('loading');\r\n loadJs(\"https://www.instagram.com/embed.js\").then(data => {\r\n //console.log('instgrm loaded', data);\r\n if (window.instgrm) {\r\n window.instgrm.Embeds.process();\r\n setEmbedStatus('loaded');\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n return { loadEmbedJs: loadEmbedJs }\r\n}","//import { CmsPageController } from './cms-page-controller'\n\nexport class CmsRadioSender {\n controller;//: CmsPageController;\n constructor(controller) {\n this.controller = controller;\n }\n\n sendMessageToParent(action: string, data: any) {\n var cloned = JSON.parse(JSON.stringify(data));\n 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, Loading } from 'components';\nimport cmsUtils from 'cms/utils/cmsUtils';\n\n// function useQuery() {\n// return new URLSearchParams(useLocation().search);\n// }\n\nexport function EditPage(props) {\n //const [page, setPage] = useState(null);\n\n //const pageId = props.pageId;\n const { query } = useRouter();\n const { cmsViewMode = 'edit', id, publishVer, editVer } = query;\n const pageId = id;\n\n //console.log(pageId, cmsViewMode, env.apiBase, env)\n\n const get = useGet();\n useEffect(() => {\n get.send(env.apiBase + '/api/cms/GetPage/' + pageId + '?cmsViewMode=' + cmsViewMode\n + (publishVer ? '&publishVer=' + publishVer : '')\n + (editVer ? '&editVer=' + editVer : '')\n );\n // eslint-disable-next-line\n }, [pageId]);\n\n if (get.loading()) {\n return \n } else if (get.hasErrors()) {\n return \n }\n\n //console.log(router.pathname);\n //console.log(res);\n\n const pageData = get.response.data;\n const cmsOption = { isCmsEdit: true };\n \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 props.onChangeThemeColor('theme--' + cmsUtils.payload(pageData, 'ColorTheme') || 'default');\n return (\n
\n {sectionItems}\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';\nimport { gtm } from 'lib/tracking';\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 if(keyword && !keyword !==''){\n gtm.sendEvent('searchKeywordSubmitted', {searchKeyword: keyword} )\n }\n\n setKeyword(\"\");\n }\n function onChange(e) {\n setKeyword(e.target.value);\n }\n return (\n
search(e)}>\n \n
);\n}","import React, {useState, useEffect} from 'react';\nimport { SiteLink } from 'components';\nimport { useStore } from 'store';\n\nimport { FaChevronDown } from 'react-icons/fa';\nimport { SearchBar } from './searchBar';\n\n//for #contact link\nimport { handleElementLink } from 'components';\n\nexport function NavBar(props) {\n const open = props.open;\n const currentLocation = props.currentLocation;\n const { state } = useStore();\n const menu = state.menu || { items: [] };\n const depth = 1;\n const menuItemElts = menu.items.map((item, index) =>\n \n );\n return (\n
\n \n
\n \n
\n
);\n}\n\nfunction MenuItem(props) {\n const [subMenuOpened, setSubMenuOpened] = useState(false);\n const item = props.item;\n const subItems = item.items || [];\n const currentLocation = props.currentLocation;\n\n const subItemsElts = subItems.length > 0? subItems.map((subItem, index) =>\n \n ) : null;\n\n\n useEffect(() => {\n //console.log('navbar', currentLocation);\n setSubMenuOpened(false);\n }, [currentLocation])\n\n function closeMenu() {\n props.onCloseMenu();\n }\n\n function toggleSubmenu(e) {\n e.preventDefault();\n e.stopPropagation();\n setSubMenuOpened(!subMenuOpened);\n }\n\n //for #contact link\n function handleClick(e) {\n e.preventDefault();\n e.stopPropagation(); \n handleElementLink(e.target);\n closeMenu();\n }\n\n return (\n item.url === \"#contact\" ?\n
  • \n handleClick(e)}>\n {item.title}\n \n
  • \n : \n
  • \n closeMenu()}>\n {item.title}\n {subItemsElts && toggleSubmenu(e)}>}\n \n {subItemsElts &&\n
      \n {subItemsElts}\n
    }\n
  • \n )\n}\n\nfunction SubMenuItem(props) {\n const item = props.item;\n function closeMenu() {\n props.onCloseMenu();\n }\n\n return (\n
  • \n closeMenu()}>\n {item.title}\n \n
  • \n )\n}","import React, { useState, useEffect } from 'react';\nimport { useRouter } from 'components';\n//import { navigate, usePath, useLocationChange } from 'raviger';\nimport { SiteLink } from 'components';\nimport { NavBar } from './navBar';\nimport { FaAngleLeft } from 'react-icons/fa';\nimport { useHistory } from 'components';\nimport utils from 'utils';\n\nexport function TopHeader(props) {\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 //history.push(path + hash + search)\n history.push(path)\n\n if (hash) { scrollTo(); }\n }\n\n useEffect(() => {\n scrollTo(); \n if(window.scrollY >= 100){\n setScrolled(true);\n }\n window.addEventListener('scroll', function(){\n if(window.scrollY >= 100 ){\n setScrolled(true);\n }\n else{\n setScrolled(false);\n } \n //console.log(\"ABCsdfsdfd\", this.window.scrollY);\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 setMenuOpened(!menuOpened);\n }\n\n function onCloseMenu() {\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 // useEffect(() => {\n // console.log('use history')\n // }, []);\n// console.log(history.history)\n\n return (\n <>\n {/*
    */}\n
    \n {\n history.history.length > 1 && \n \n BACK\n \n } \n \n \n \n \n
    \n \n );\n}","import React from 'react';\nimport { useRouter } from 'components';\nimport { SiteLink } from 'components';\n\nexport function BottomDock(props) {\n const links = [\n { url: '/places-to-go', title: 'PLACES TO GO' },\n { url: '/see-and-do', title: 'SEE & DO' },\n { url: '/plan', title: 'PLAN' },\n { url: '/ideas', title: 'IDEAS' },\n { url: '/events', title: 'EVENTS' }\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 React from 'react';\nimport { useStore } from 'store';\nimport FsLightbox from 'fslightbox-react';\n\nexport function CommonVideoPopup(props) {\n const { state } = useStore();\n\n const [toggler, setToggler] = React.useState(false);\n const [sources, setSources] = React.useState([]);\n const [popupIndex, setPopupIndex] = React.useState(0);\n\n const popup = state.popup;\n //console.log(popup, JSON.stringify((popup && popup.sources) || []), JSON.stringify(sources), (popup && popup.popupIndex), popupIndex)\n if (JSON.stringify((popup && popup.sources) || []) !== JSON.stringify(sources) ||\n ((popup && popup.popupIndex) || 0) !== popupIndex) {\n setSources(popup.sources);\n setPopupIndex(popup.popupIndex);\n setTimeout(() => { setToggler(!toggler) }, 10)\n } else {\n\n }\n //console.log(toggler, popupIndex, sources)\n return (\n
    \n {\n }}\n />\n
    \n\n );\n}","import React, {useState, useCallback, useEffect} from 'react';\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { useRouter } from 'components';\nimport { StoreProvider } from 'store';\nimport { ViewPage } from './cms/pages/viewPage/viewPage';\nimport { EditPage } from './cms/pages/editPage/editPage';\nimport { TopHeader } from './layout/topHeader/topHeader';\n//import { Footer } from './layout/footer/footer';\nimport { BottomDock } from './layout/bottomDock/bottomDock';\n// import { BlogView } from './site/blog/blogView';\nimport { useScrollPosition } from '@n8tb1t/use-scroll-position';\nimport { useParallax } from 'components';\nimport { AppVersionPage } from 'components';\nimport { MediaQueryStatus } from 'components';\nimport { CommonVideoPopup } from \"./layout/popup/commonVideoPopup\";\nimport { HelmetProvider } from 'react-helmet-async';\nimport { AtdwPage, AtdwContext } from 'site/atdw/index';\nimport AOS from 'aos';\n\nfunction PageUpdated() {\n //const { pathname } = useRouter();\n const { path } = useRouter();\n const parallax = useParallax();\n\n React.useLayoutEffect(() => {\n window.scrollTo(0, 0);\n parallax.reset();\n // eslint-disable-next-line\n }, [path]);\n return null;\n}\n\nfunction AppLayout(props) {\n const { pathname } = useRouter();\n const [themeColor, setThemeColor] = useState('');\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 //sapmple\n // const onChangeThemeColor = ((value) => {\n // console.log(\"onChangeThemeColor\");\n // setThemeColor(value);\n // });\n\n const onChangeThemeColor = useCallback((value)=>{\n //console.log(\"onChangeThemeColor\");\n setThemeColor(value);\n }, []);\n\n useEffect(()=>{\n AOS.init({\n duration : 1200\n });\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\nfunction App() {\n \n const [atdwDataHistory, setAtdwDataHistory] = useState(null);\n const [atdwDataHistory2, setAtdwDataHistory2] = useState(null);\n\n function setupAtdwDataHistory(value){\n //console.log(\"setupAtdwDataHistory\", value);\n setAtdwDataHistory(value);\n }\n\n function setupAtdwDataHistory2(value){\n //console.log(\"setupAtdwDataHistory2\");\n setAtdwDataHistory2(value);\n }\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\nexport default App;\n\n//\n//\n//","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nlet serviceUpdateCheckerInterval = null;\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl, {updateViaCache: 'none'})\n .then(registration => {\n // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration\n console.log('Service Worker registration successful with scope: ', registration.scope);\n \n // Regular checking service worker\n if (serviceUpdateCheckerInterval) { try { clearInterval(serviceUpdateCheckerInterval) } catch (e) { } }\n serviceUpdateCheckerInterval = setInterval(() => {\n console.log('Checking SW updates...')\n registration.update();\n }, 1/*hour(s)*/ * 10/*minutes*/ * 60 * 1000);\n\n window.updateSW = function() {\n console.log('Checking SW updates... (force)')\n return registration.update();\n }\n \n // When the user asks to refresh the UI, we'll need to reload the window\n var preventDevToolsReloadLoop = false;\n navigator.serviceWorker.addEventListener('controllerchange', function (ev) {\n console.log('Service Worker controller change', ev)\n // Ensure refresh is only called once.\n // This works around a bug in \"force update on reload\".\n if (preventDevToolsReloadLoop) return;\n preventDevToolsReloadLoop = true;\n window.location.reload();\n });\n\n // onNewServiceWorker(registration, function () {\n // console.log('onNewServiceWorker', registration)\n // alert('New Update Available');\n \n // console.log('User okay to update', registration);\n // if (!registration.waiting) {\n // // Just to ensure registration.waiting is available before calling postMessage()\n // return;\n // }\n // registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n\n // console.log('show refresh')\n // });\n \n registration.onupdatefound = () => {\n console.log('registration.onupdatefound', registration.installing)\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n\n navigator.serviceWorker.ready.then(function (registration) {\n console.log('Service Worker ready');\n });\n}\n\n\n// function onNewServiceWorker(registration, callback) {\n// if (registration.waiting) {\n// console.log('onNewServiceWorker-registration.waiting')\n// // SW is waiting to activate. Can occur if multiple clients open and one of the clients is refreshed.\n// return callback();\n// }\n\n// function listenInstalledStateChange() {\n// console.log('listenInstalledStateChange', registration.installing)\n// registration.installing.addEventListener('statechange', function (event) {\n// console.log('listenInstalledStateChange - statechange', event)\n// if (event.target.state === 'installed') {\n// // A new service worker is available, inform the user\n// callback();\n// }\n// });\n// };\n\n// if (registration.installing) {\n// console.log('onNewServiceWorker-registration.installing')\n// return listenInstalledStateChange();\n// }\n\n// // We are currently controlled so a new SW may be found...\n// // Add a listener in case a new SW is found,\n// registration.addEventListener('updatefound', listenInstalledStateChange);\n// }\n\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport './polyfill';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './_scss/index.scss';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nReactDOM.render(, document.getElementById('root'));\n//ReactDOM.hydrate(, document.getElementById('root'));\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.register({\n onUpdate: (registration) => {\n console.log('updated');\n const update = window.confirm('New Update Available. Do you want to update? (Refresh page)');\n if (update){\n if (!registration.waiting) {\n // Just to ensure registration.waiting is available before calling postMessage()\n return;\n }\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n \n }\n }\n});\n"],"sourceRoot":""}