@tfehotels/tfe-gatsby-library 1.0.149 → 1.0.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("date-fns"),t=require("classnames"),a=require("react-hot-toast"),n=require("react"),r=require("goober"),o=require("@fortawesome/react-fontawesome"),s=require("marked"),i=require("html-react-parser"),l=require("react-google-autocomplete"),c=require("gatsby-plugin-image"),u=require("gatsby"),d=require("react-select");const m=e=>e<769,p=e=>e>=769&&e<=1024,h=e=>e>1024,g=(e,t)=>{const a=e.style.display;"block"!==a&&(e.style.display="block");const n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),o=r.top-n.top,s=n.bottom-r.bottom;o>=0&&s>=0||(Math.abs(o)<Math.abs(s)?e.scrollTop+=o:e.scrollTop-=s),e.style.display=a},_=(e,t)=>t?!!e.length&&!e.includes(t):!e.length,f=(e,a=null)=>(a&&(e.hidden=_(a,""),e.hidden_mobile=_(a,"m"),e.hidden_tablet=_(a,"t"),e.hidden_desktop=_(a,"d")),t(e));const b=async(e,t,a="post",n={})=>{e.includes(process.env.API_HOST)&&(n["project-id"]=process.env.PROJECT);let r={headers:{"Content-Type":"application/json",...n},method:a.toUpperCase()};"post"===a?r.body=JSON.stringify(t):e=`${e}?${new URLSearchParams(Object.entries(t).map((([e,t])=>[e,null===t?"":`${t}`])))}`;try{let t=await fetch(e,r);return{...await t.json(),status:t.status}}catch(e){return console.error(e),{success:!1,error:"Request failed",status:400}}},y={select:e=>e.value,input:e=>e.target.value,textarea:e=>e.target.value,"google-places":e=>e.target.value},E=(e,t)=>y.hasOwnProperty(e)?y[e](t):t,v={},w=(e,t)=>v.hasOwnProperty(e)?v[e](t):t,S=new Set(["input","select","textarea","checkbox","button","recaptcha2","google-places","country-prefix","country","hidden"]),x=e=>e.filter((e=>!!e)).join(", ");const C=e=>e.optimized?`${e.url}${e.name}-20w.webp`:e.url,k=[["AF","93","Afghanistan"],["AL","355","Albania"],["DZ","213","Algeria"],["AD","376","Andorra"],["AO","244","Angola"],["AG","1268","Antigua and Barbuda"],["AR","54","Argentina"],["AM","374","Armenia"],["AW","297","Aruba"],["AU","61","Australia"],["AT","43","Austria"],["AZ","994","Azerbaijan"],["BS","1242","Bahamas"],["BH","973","Bahrain"],["BD","880","Bangladesh"],["BB","1246","Barbados"],["BY","375","Belarus"],["BE","32","Belgium"],["BZ","501","Belize"],["BJ","229","Benin"],["BT","975","Bhutan"],["BO","591","Bolivia"],["BA","387","Bosnia and Herzegovina"],["BW","267","Botswana"],["BR","55","Brazil"],["IO","246","British Indian Ocean Territory"],["BN","673","Brunei"],["BG","359","Bulgaria"],["BF","226","Burkina Faso"],["BI","257","Burundi"],["KH","855","Cambodia"],["CM","237","Cameroon"],["CA","1","Canada"],["CV","238","Cape Verde"],["BQ","599","Caribbean Netherlands"],["CF","236","Central African Republic"],["TD","235","Chad"],["CL","56","Chile"],["CN","86","China"],["CO","57","Colombia"],["KM","269","Comoros"],["CD","243","Congo"],["CG","242","Congo"],["CR","506","Costa Rica"],["CI","225","Côte d'Ivoire"],["HR","385","Croatia"],["CU","53","Cuba"],["CW","599","Curaçao"],["CY","357","Cyprus"],["CZ","420","Czech Republic"],["DK","45","Denmark"],["DJ","253","Djibouti"],["DM","1767","Dominica"],["DO","1","Dominican Republic"],["EC","593","Ecuador"],["EG","20","Egypt"],["SV","503","El Salvador"],["GQ","240","Equatorial Guinea"],["ER","291","Eritrea"],["EE","372","Estonia"],["ET","251","Ethiopia"],["FJ","679","Fiji"],["FI","358","Finland"],["FR","33","France"],["GF","594","French Guiana"],["PF","689","French Polynesia"],["GA","241","Gabon"],["GM","220","Gambia"],["GE","995","Georgia"],["DE","49","Germany"],["GH","233","Ghana"],["GR","30","Greece"],["GD","1473","Grenada"],["GP","590","Guadeloupe"],["GU","1671","Guam"],["GT","502","Guatemala"],["GN","224","Guinea"],["GW","245","Guinea-Bissau"],["GY","592","Guyana"],["HT","509","Haiti"],["HN","504","Honduras"],["HK","852","Hong Kong"],["HU","36","Hungary"],["IS","354","Iceland"],["IN","91","India"],["ID","62","Indonesia"],["IR","98","Iran"],["IQ","964","Iraq"],["IE","353","Ireland"],["IL","972","Israel"],["IT","39","Italy"],["JM","1876","Jamaica"],["JP","81","Japan"],["JO","962","Jordan"],["KZ","7","Kazakhstan"],["KE","254","Kenya"],["KI","686","Kiribati"],["XK","383","Kosovo"],["KW","965","Kuwait"],["KG","996","Kyrgyzstan"],["LA","856","Laos"],["LV","371","Latvia"],["LB","961","Lebanon"],["LS","266","Lesotho"],["LR","231","Liberia"],["LY","218","Libya"],["LI","423","Liechtenstein"],["LT","370","Lithuania"],["LU","352","Luxembourg"],["MO","853","Macau"],["MK","389","Macedonia"],["MG","261","Madagascar"],["MW","265","Malawi"],["MY","60","Malaysia"],["MV","960","Maldives"],["ML","223","Mali"],["MT","356","Malta"],["MH","692","Marshall Islands"],["MQ","596","Martinique"],["MR","222","Mauritania"],["MU","230","Mauritius"],["MX","52","Mexico"],["FM","691","Micronesia"],["MD","373","Moldova"],["MC","377","Monaco"],["MN","976","Mongolia"],["ME","382","Montenegro"],["MA","212","Morocco"],["MZ","258","Mozambique"],["MM","95","Myanmar"],["NA","264","Namibia"],["NR","674","Nauru"],["NP","977","Nepal"],["NL","31","Netherlands"],["NC","687","New Caledonia"],["NZ","64","New Zealand"],["NI","505","Nicaragua"],["NE","227","Niger"],["NG","234","Nigeria"],["KP","850","North Korea"],["NO","47","Norway"],["OM","968","Oman"],["PK","92","Pakistan"],["PW","680","Palau"],["PS","970","Palestine"],["PA","507","Panama"],["PG","675","Papua New Guinea"],["PY","595","Paraguay"],["PE","51","Peru"],["PH","63","Philippines"],["PL","48","Poland"],["PT","351","Portugal"],["PR","1","Puerto Rico"],["QA","974","Qatar"],["RE","262","Réunion"],["RO","40","Romania"],["RU","7","Russia"],["RW","250","Rwanda"],["KN","1869","Saint Kitts and Nevis"],["LC","1758","Saint Lucia"],["VC","1784","Saint Vincent and the Grenadines"],["WS","685","Samoa"],["SM","378","San Marino"],["ST","239","São Tomé and Príncipe"],["SA","966","Saudi Arabia"],["SN","221","Senegal"],["RS","381","Serbia"],["SC","248","Seychelles"],["SL","232","Sierra Leone"],["SG","65","Singapore"],["SK","421","Slovakia"],["SI","386","Slovenia"],["SB","677","Solomon Islands"],["SO","252","Somalia"],["ZA","27","South Africa"],["KR","82","South Korea"],["SS","211","South Sudan"],["ES","34","Spain"],["LK","94","Sri Lanka"],["SD","249","Sudan"],["SR","597","Suriname"],["SZ","268","Swaziland"],["SE","46","Sweden"],["CH","41","Switzerland"],["SY","963","Syria"],["TW","886","Taiwan"],["TJ","992","Tajikistan"],["TZ","255","Tanzania"],["TH","66","Thailand"],["TL","670","Timor-Leste"],["TG","228","Togo"],["TO","676","Tonga"],["TT","1868","Trinidad and Tobago"],["TN","216","Tunisia"],["TR","90","Turkey"],["TM","993","Turkmenistan"],["TV","688","Tuvalu"],["UG","256","Uganda"],["UA","380","Ukraine"],["AE","971","United Arab Emirates"],["GB","44","United Kingdom"],["US","1","United States"],["UY","598","Uruguay"],["UZ","998","Uzbekistan"],["VU","678","Vanuatu"],["VA","39","Vatican City"],["VE","58","Venezuela"],["VN","84","Vietnam"],["YE","967","Yemen"],["ZM","260","Zambia"],["ZW","263","Zimbabwe"]],$=new Set(["AD","AL","AT","BA","BE","BG","BY","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MC","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","SM","TR","UA","VA"]),N={FAB:"fab",FAS:"fas"},T=({icon:e,className:t,onClick:a,color:r,width:s,height:i})=>N.hasOwnProperty(e.group)?n.createElement(o.FontAwesomeIcon,{className:t,color:r,onClick:a,width:s,height:i,icon:[N[e.group],e.icon]}):n.createElement("img",{className:t,loading:"lazy",width:s,height:i,alt:e.icon,onClick:a,src:`/icons/${e.group}/${e.icon}.svg`}),O=e=>`\n0% {transform: translate3d(0,${-200*e}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`,A=e=>`\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${-150*e}%,-1px) scale(.6); opacity:0;}\n`,L=(()=>{let e;return()=>{if(void 0===e&&"undefined"!=typeof window){const t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})(),P=({id:e,visible:t,message:o,height:s,position:i,variant:l})=>{const c=s?((e,t)=>{const a=e.includes("top")?1:-1,[n,o]=L()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[O(a),A(a)];return{animation:t?`${r.keyframes(n)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${r.keyframes(o)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}})(i||"top-center",t):{opacity:0};return n.createElement("div",{className:`toast ${t?"animate-enter":"animate-leave"} ${l}`,style:{...c}},n.createElement("button",{className:"close",onClick:()=>a.toast.dismiss(e)},n.createElement(T,{icon:{icon:"close",group:"GLO"}})),o)},M=(e,t="error",r=1e4)=>{a.custom((a=>n.createElement(P,{id:a.id,visible:a.visible,message:e,variant:t,height:a.height,position:a.position})),{duration:r})};const I=(e,t={})=>{"undefined"!=typeof window&&window.dataLayer?window.dataLayer.push({...t,event:e}):console.warn(`GTM Event "${e}" skipped: dataLayer not found.`)},B=()=>{if("undefined"==typeof window)return null;let t=localStorage.getItem("search-params");return t&&(t=JSON.parse(t),t.check_in=t.check_in?new Date(t.check_in):new Date,t.check_out=t.check_out?new Date(t.check_out):e.addDays(new Date,1),t.check_in<new Date)?null:t},R=e=>e.map((e=>(e._index=e._index.slice(0,-2),e._source.images?.length&&(e._source.images=e._source.images.map((e=>({type:"image",title:"",data:{},loading:"eager",image:e})))),e._source.location&&(e._source.location={lat:e._source.location.lat,lng:e._source.location.lon}),e))),U=t=>{try{return t?e.parseISO(t):void 0}catch(e){return}},G=e=>{try{return e?parseInt(e):void 0}catch(e){return}},D=e=>e?[e]:[],j={check_in:U,check_out:U,child_count:G,adult_count:G,rate_codes:D,promo_codes:D};const H=(e,t)=>`${e.replace(new RegExp("/$"),"")}/${t.replace(new RegExp("^/"),"")}`;function F({children:e,className:t,tagAttrs:a,onClick:r}){const o=new s.marked.Renderer;o.link=(e,t,n)=>{let r={href:e,title:t??"",target:"_blank"};return a?.a&&(r={...r,...a?.a}),`<a ${Object.entries(r).map((([e,t])=>`${e}="${t}"`)).join(" ")}>${n}</a>`},s.marked.setOptions({renderer:o});const l=()=>i(e?s.marked(e):"");return n.createElement(n.Fragment,null,t||r?n.createElement("div",{className:t,onClick:r},l()):n.createElement(n.Fragment,null,l()))}function K({className:e,label:t,description:a,...r}){return n.createElement("label",{className:`checkbox${r.value?" checked":""}${e?` ${e}`:""}`,onClick:r.onClick,onChange:r.onChange},!!t&&n.createElement("span",null,t),n.createElement("svg",{id:r.id,width:r.width?r.width:30,height:r.height?r.height:30,viewBox:"0 0 440 440"},n.createElement("path",{className:"box",d:"M 72 136 C 72 100.654 100.654 72 136 72 L 304 72 C 339.346 72 368 100.654 368 136 L 368 304 C 368 339.346 339.346 368 304 368 L 136 368 C 100.654 368 72 339.346 72 304 Z",fill:r.color?r.color:"#58595b"}),n.createElement("path",{className:"tick",d:"M 160 180 L 210 250 L 340 130",transform:"translate(40 65) rotate(-10 70.904 438.687)",fill:"transparent",strokeWidth:30,stroke:"white",strokeLinecap:"square",strokeLinejoin:"miter"})),!!a&&n.createElement("div",null,n.createElement(F,null,a)))}function z({className:e,label:t,description:a,input_name:r,onClick:o,onChange:s,value:i,...l}){const[c,u]=n.useState(!1),[d,m]=n.useState(0),[p,h]=n.useState(""),_=n.useRef(null),f=n.useRef(null),b=n.useCallback((e=>{s?.(k[e][1]),n.startTransition((()=>{u(!1),m(e),h(k[e][2])}))}),[s,k]),y=n.useCallback((()=>{if(!f.current)return;const e=f.current.querySelector(`#${l.name??"country-prefix"}__${k[d][0]}`);e&&g(f.current,e)}),[d,k]);return n.useEffect((()=>{const e=e=>{_.current&&!_.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&n.startTransition((()=>u(!1)))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[_,f]),n.useEffect((()=>{y()}),[d]),n.useEffect((()=>{document.body.classList[c?"add":"remove"]("no-scroll"),_.current&&c&&_.current.focus()}),[c]),n.createElement("label",{className:"country-prefix "+(e?` ${e}`:"")},!!t&&n.createElement("span",null,t),n.createElement("div",{className:"selected-prefix",onClick:()=>n.startTransition((()=>u(!0)))},"+",i??k[0][1],n.createElement(T,{className:c?"opened":"",icon:{icon:"chevron-right",group:"FAS"}})),n.createElement("div",{className:"countries-prefixes"+(c?" show":"")},n.createElement("input",{ref:_,name:r,value:p,onChange:e=>function(e){n.startTransition((()=>{h(e)}));let t=k.findIndex((e=>e[2].toLowerCase().startsWith(p.toLowerCase())));t>=0&&n.startTransition((()=>m(t)))}(e.target.value),onKeyDown:e=>{const{key:t}=e;"ArrowDown"===t||"ArrowUp"===t?n.startTransition((()=>{const e="ArrowDown"===t?Math.min(d+1,k.length-1):Math.max(d-1,0);m(e),h(k[e][2])})):"Escape"===t?n.startTransition((()=>u(!1))):"Enter"===t&&(e.preventDefault(),e.stopPropagation(),b(d))}}),n.createElement("ul",{ref:f,role:"listbox",tabIndex:-1,"aria-activedescendant":`${l.name??"country-prefix"}__${k[d][0]}`},k.map((([e,t,a],r)=>n.createElement("li",{className:r===d?"selected":"",role:"option",onClick:()=>b(r),"aria-selected":r===d,"aria-label":`${a} +${t}`,id:`${l.name??"country-prefix"}__${e}`,key:`${l.name??"country-prefix"}__${e}`},a," +",t))))),!!a&&n.createElement("div",null,n.createElement(F,null,a)))}function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},V.apply(this,arguments)}const q=e=>{if(e.address_components)for(const t of e.address_components)if("country"==t.types[0])return t.short_name;return null};var Z=({label:e,name:t,input_name:a,value:r,defaultCountryCode:o,onChange:s,onClick:i,onFocus:c,onBlur:u,data:d,...m})=>{const[p,h]=n.useState();if(!process.env.GOOGLEMAPS_KEY)throw new Error("The environment variable GOOGLEMAPS_KEY is not defined!");const{ref:g}=l.usePlacesWidget({apiKey:process.env.GOOGLEMAPS_KEY,onPlaceSelected:e=>h({target:{value:e.formatted_address,data:{countryCode:q(e)}}}),...d});return n.useEffect((()=>{s&&p&&s(p)}),[p]),n.useEffect((()=>{if(!o||r||p)return;const e=k.find((e=>e[0]===o.toLowerCase()));e&&h({target:{value:e[2],data:{countryCode:o}}})}),[o]),n.createElement("label",{className:`google-places label-${t}`},!!e&&n.createElement("span",null,e),n.createElement("input",V({ref:g,name:a,autoComplete:"off",onChange:s,onClick:i,onFocus:c,onBlur:u,value:r,placeholder:m.placeholder??void 0},m)))};const W=({animate:e=!0,...t})=>n.createElement("a",{className:t.className,title:t.title,href:t.to,target:t.target?t.target:t.to&&"#"!==t.to[0]?"_blank":void 0,onClick:t.onClick},t.children);var J=({icon:e,...t})=>{const a=t.className?t.className:t.data?.class?t.data.class:"",r=t.page_slug?u.Link:W;let o=t.page_slug?`${t.page_slug}${t.query_params?`?${t.query_params}`:""}`:t.external_link??"";return t.anchor&&(o=`${o}#${t.anchor}`),n.createElement(r,{className:`${a}${t.display_on?` ${f({},t.display_on)}`:""}${t.mobile_text?" viewport-text":""}`,to:o,title:t.title,target:t.target,onClick:t.onClick,animate:t.animate},!!e&&n.createElement(T,{icon:e,width:e.width,height:e.height}),t.children?t.children:t.mobile_text?n.createElement(n.Fragment,null,n.createElement("span",{className:"d-text"},t.text),n.createElement("span",{className:"m-text"},t.mobile_text)):t.text)};const Y=e=>{if(!e)return;let t={src:e.url,sizes:"100vw",srcSet:""},a=[],n={fallback:e.url};const r=[e.width,360,769,1024,1216,1408].sort(((e,t)=>e-t));if(e.optimized){t.src=e.url+e.name+"-"+e.width+"w.jpg",n.fallback=e.url+e.name+"-20w.jpg",a.push({sizes:"100vw",srcSet:"",type:"image/avif"}),a.push({sizes:"100vw",srcSet:"",type:"image/webp"});for(let n in r){if(r[n]>e.width)break;let o=("0"===n?"":",")+e.url+e.name+"-"+r[n];t.srcSet+=o+"w.jpg "+r[n]+"w",a[0].srcSet+=o+"w.avif "+r[n]+"w",a[1].srcSet+=o+"w.webp "+r[n]+"w"}}return c.getImage({childImageSharp:{gatsbyImageData:{backgroundColor:"transparent",height:e.height/e.width,width:1,layout:"fullWidth",placeholder:n,images:{fallback:t,sources:a}}}})};var Q=({imageData:e,...a})=>{let r=e??(()=>{const e=Y(a.image),t=Y(a.mobile_image);return e&&t?c.withArtDirection(e,[{media:"(max-width: 768px)",image:t}]):e})();if(!r)return n.createElement("span",null,"Missing image!");const o={className:t({"mobile-img":!!a.image&&!!a.mobile_image,[a.className]:!!a.className}),image:r,onLoad:a.onLoad,alt:a.image?.alt?a.image.alt:a.image?.name?.replaceAll("-"," ")??"",style:a.style};return a.page_slug||a.external_link?n.createElement(J,{page_slug:a.page_slug,external_link:a.external_link,title:a.link_text},n.createElement(c.GatsbyImage,o)):n.createElement(c.GatsbyImage,o)};var X=({label:e,type:t,input_type:a,description:r,name:o,input_name:s,icon:i,iconOnClick:l,read_only:c,className:u,...d})=>n.createElement("label",{className:`input label-${o}${"hidden"===a?" hidden":""}${u?` label-${u}`:""}`},!!e&&n.createElement("span",null,e),!!i&&n.createElement(T,{icon:i,onClick:l}),n.createElement("input",V({type:a,name:s,readOnly:c,className:u},d)),!!r&&n.createElement("div",{className:"desc"},n.createElement("div",null,n.createElement(F,null,r))));var ee=({pk:e,...t})=>n.createElement("ul",{className:t.className},t.links.map(((a,r)=>n.createElement("li",{key:`LinkList${e}-${r}`},n.createElement(J,a,t.children)))));const te=(e,t)=>{for(let a of e){if(a.hasOwnProperty("options")){for(let e of a.options)if(t===e.value)return e;return a}if(t===a.value)return a}return null};var ae=({value:e,styles:t,options:a,label:r,scrollDisabledOnClose:o,...s})=>{const i=(e=>Array.isArray(e)?e:"string"==typeof e[Object.keys(e)[0]]?Object.entries(e).reduce(((e,[t,a])=>(e.push({label:a,value:t}),e)),[]):Object.entries(e).reduce(((e,[t,a])=>(e.push({label:t,options:Object.entries(a).reduce(((e,[t,a])=>[...e,{label:a,value:t}]),[])}),e)),[]))(a);return n.createElement("label",{className:"label-"+(s.className?s.className:s.name)},!!r&&n.createElement("span",null,r),n.createElement(d,V({options:i,value:"string"==typeof e?te(i,e):e,styles:t,onMenuOpen:()=>document.body.classList.add("no-scroll"),onMenuClose:()=>!o&&document.body.classList.remove("no-scroll"),classNamePrefix:"select"},s)))};var ne=e=>n.createElement("img",{className:e.className,src:e.file.url});var re=({text:e,icon:t,...a})=>n.createElement("div",{className:a.className},!!t&&n.createElement(T,{icon:t,width:t.width,height:t.height})," ",n.createElement(F,{tagAttrs:a.tagAttrs},e));var oe=({label:e,...t})=>n.createElement("label",{className:`textarea label-${t.name}`},!!e&&n.createElement("span",null,e),n.createElement("textarea",t));var se=e=>{const t=n.useMemo((()=>e.title&&"#"===e.title[0]?e.title:`### ${e.title}`),[e.title]);return n.createElement(F,{className:e.className,onClick:e.onClick},t)};var ie=({...e})=>n.createElement("button",{className:e.className?e.className:e.data?.class?e.data.class:void 0,type:e.input_type??"button",onClick:e.onClick},e.value);const le=e=>{const{children:t,icon:a,...r}=e;return n.createElement("button",V({className:"embla__button embla__button--prev",type:"button"},r),a||n.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},n.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"})),t)},ce=e=>{const{children:t,icon:a,...r}=e;return n.createElement("button",V({className:"embla__button embla__button--next",type:"button"},r),a||n.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},n.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"})),t)},ue=e=>{const{children:t,...a}=e;return n.createElement("button",V({type:"button"},a),t)},de={mobile:"(max-width: 768px)",tablet:"(min-width: 769px) and (max-width: 1024px)",tabletPortrait:"(min-width: 769px) and (max-width: 950px)",tabletLandscape:"(min-width: 951px) and (max-width: 1024px)",desktop:"(min-width: 1025px) and (max-width: 1215px)",wide:"(min-width: 1216px) and (max-width: 1407)",fullhd:"(min-width: 1408px)"};var me=({id:e,emblaRef:t,emblaApi:a,slidesPerView:r,slidesPerViewport:o,slides:s,gap:i,height:l,showButtons:c,showDots:u,showProgress:d,showScroll:m,prevIcon:p,nextIcon:h,className:g})=>{const[_,f]=n.useState(0),{selectedIndex:b,scrollSnaps:y,onDotButtonClick:E}=((e,t)=>{const[a,r]=n.useState(0),[o,s]=n.useState([]),i=n.useCallback((t=>{e&&e.scrollTo(t)}),[e]),l=n.useCallback((e=>{s(e.scrollSnapList())}),[]),c=n.useCallback((e=>{r(e.selectedScrollSnap())}),[]);return n.useEffect((()=>{e&&t&&(l(e),c(e),e.on("reInit",l),e.on("reInit",c),e.on("select",c))}),[e,l,c]),{selectedIndex:a,scrollSnaps:o,onDotButtonClick:i}})(a,u),[v,w]=n.useState({}),S=n.useCallback((e=>{const t=Math.max(0,Math.min(1,e.scrollProgress()));f(100*t)}),[]),{prevBtnDisabled:x,nextBtnDisabled:C,onPrevButtonClick:k,onNextButtonClick:$}=((e,t)=>{const[a,r]=n.useState(!0),[o,s]=n.useState(!0),i=n.useCallback((()=>{e&&e.scrollPrev()}),[e]),l=n.useCallback((()=>{e&&e.scrollNext()}),[e]),c=n.useCallback((e=>{r(!e.canScrollPrev()),s(!e.canScrollNext())}),[]);return n.useEffect((()=>{e&&t&&(c(e),e.on("reInit",c),e.on("select",c))}),[e,c]),{prevBtnDisabled:a,nextBtnDisabled:o,onPrevButtonClick:i,onNextButtonClick:l}})(a,c);return n.useEffect((()=>{a&&(d||m)&&(S(a),a.on("reInit",S),a.on("scroll",S))}),[a,S]),n.useEffect((()=>{a&&n.startTransition((()=>{w(a.internalEngine().options??{}),a.reInit()}))}),[a]),n.useEffect((()=>{if("y"===v?.axis&&!l)throw Error('Vertical carousel needs "slideHeight" prop')}),[v]),n.createElement("div",{id:e,className:`embla${"y"===v.axis?" vertical":""}${g?` ${g}`:""}`},n.createElement("div",{className:"embla__viewport",ref:t},n.createElement("div",{className:"embla__container"},s.map(((t,a)=>n.createElement("div",{className:"embla__slide",key:`${e}-slide-${a}`},t))))),!!c&&n.createElement(n.Fragment,null,n.createElement(le,{onClick:k,disabled:x,icon:p}),n.createElement(ce,{onClick:$,disabled:C,icon:h})),!!u&&n.createElement("div",{className:"embla__dots"},y.map(((e,t)=>n.createElement(ue,{key:t,onClick:()=>E(t),className:"embla__dot".concat(t===b?" embla__dot--selected":"")})))),!!d&&n.createElement("div",{className:"embla__progress"},n.createElement("div",{className:"embla__progress__bar",style:{transform:`translate3d(${_}%,0px,0px)`}})),!!m&&n.createElement("div",{className:"embla__scroll"},n.createElement("div",{className:"embla__scroll__bar"})),n.createElement("style",null,!!Object.keys(v).length&&`\n #${e} > .embla__viewport > .embla__container{\n margin-${"y"===v.axis?"top":"left"}: calc(${i??0}px * -1);\n ${l?`height: calc(${i||0}px + ${l}px);`:""}\n }\n #${e} > .embla__scroll > .embla__scroll__bar{\n width: ${s.length<=r?"100%":"50%"};\n transform: translate3d(${_}%,0px,0px);\n }\n #${e} > .embla__viewport > .embla__container > .embla__slide{\n flex: 0 0 ${(100/r).toFixed(2)}%;\n padding-${"y"===v.axis?"top":"left"}: ${i||0}px;\n }\n ${o?Object.entries(o).map((([t,a])=>{let n=a.gap?a.gap:i??null,r=a.slides;return`@media ${de[t]} {\n #${e} > .embla__viewport > .embla__container{\n ${null!==n?`margin-${"y"===v.axis?"top":"left"}: calc(${n}px * -1);`:""}\n ${null!==n&&a?.height?`height: calc(${n}px + ${a.height}px);`:""}\n } \n #${e} > .embla__scroll > .embla__scroll__bar{\n width: ${s.length<=r?"100%":"50%"};\n }\n #${e} > .embla__viewport > .embla__container > .embla__slide {\n flex: 0 0 ${(100/r).toFixed(2)}%;\n ${null!==n?`padding-${"y"===v.axis?"top":"left"}: ${n}px;`:""}\n }\n }`})).join("\n"):""}\n `))};var pe=({children:e,to:t,activeClassName:a,partiallyActive:r,internal:o=!0,...s})=>o?n.createElement(u.Link,V({to:t,activeClassName:a,partiallyActive:r},s),e):n.createElement("a",V({href:t},s),e);var he=({modalId:e,show:t,className:a,setShowModal:r,children:o,closeWidth:s,closeHeight:i,closeIcon:l={icon:"times",group:"FAS"}})=>(n.useEffect((()=>{document.body.classList[t?"add":"remove"]("no-scroll")}),[t]),n.createElement("div",{className:"modal-layout"+(t?" opened":""),onClick:t=>{t.target===t.currentTarget&&r(e,!1)}},n.createElement("div",{className:"modal"+(a?` ${a}`:"")},n.createElement("div",{className:"modal-body"},o),n.createElement("button",{className:"close",onClick:()=>r(e,!1)},n.createElement(T,{icon:l,width:s,height:i})))));function ge({color:e,size:t,className:a}){return n.createElement("div",{className:"spinner-box"+(a?` ${a}`:"")},n.createElement("div",{className:"spinner",style:{border:`5px solid ${e||"white"}`,width:t||45,height:t||45}}))}const _e={link:J,title:se,text:re,input:X,textarea:oe,checkbox:K,country:function({className:e,label:t,description:a,input_name:r,onClick:o,onChange:s,value:i,placeholder:l,...c}){const u=n.useMemo((()=>k.reduce(((e,t)=>(e[t[0]]=t[2],e)),{})),[]),[d,m]=n.useState(!1),[p,h]=n.useState(0),[_,f]=n.useState(""),b=n.useRef(null),y=n.useRef(null),E=n.useCallback((e=>{s?.(k[e][0]),n.startTransition((()=>{m(!1),h(e),f(k[e][2])}))}),[s,k]),v=n.useCallback((()=>{if(!y.current)return;const e=y.current.querySelector(`#${c.name??"country"}__${k[p][0]}`);e&&g(y.current,e)}),[p,k]);return n.useEffect((()=>{const e=e=>{b.current&&!b.current.contains(e.target)&&y.current&&!y.current.contains(e.target)&&n.startTransition((()=>m(!1)))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[b,y]),n.useEffect((()=>{v()}),[p]),n.useEffect((()=>{document.body.classList[d?"add":"remove"]("no-scroll"),b.current&&d&&b.current.focus()}),[d]),n.createElement("label",{className:`country ${e?` ${e}`:""}${!i&&l?" placeholder":""}`},!!t&&n.createElement("span",null,t),n.createElement("div",{className:"selected-country",onClick:()=>n.startTransition((()=>m(!0)))},i?u[i]:l??"",n.createElement(T,{className:d?"opened":"",icon:{icon:"chevron-right",group:"FAS"}})),n.createElement("div",{className:"countries"+(d?" show":"")},n.createElement("input",{ref:b,name:r,value:_,onKeyDown:e=>{const{key:t,target:a}=e;"ArrowDown"===t||"ArrowUp"===t?n.startTransition((()=>{const e="ArrowDown"===t?Math.min(p+1,k.length-1):Math.max(p-1,0);h(e),f(k[e][2])})):"Escape"===t?n.startTransition((()=>m(!1))):"Enter"===t?(e.preventDefault(),e.stopPropagation(),E(p)):1!==t.length&&"Backspace"!==t||(e.preventDefault(),e.stopPropagation(),n.startTransition((()=>function(e){n.startTransition((()=>{f(e)}));let t=k.findIndex((e=>e[2].toLowerCase().startsWith(_.toLowerCase())));t>=0&&n.startTransition((()=>h(t)))}("Backspace"===t?_.slice(0,-1):`${_}${t}`))))},onChange:()=>null}),n.createElement("ul",{ref:y,role:"listbox",tabIndex:-1,"aria-activedescendant":`${c.name??"country"}__${k[p][0]}`},k.map((([e,t,a],r)=>n.createElement("li",{className:r===p?"selected":"",role:"option",onClick:()=>E(r),"aria-selected":r===p,"aria-label":a,id:`${c.name??"country"}__${e}`,key:`${c.name??"country"}__${e}`},a))))),!!a&&n.createElement("div",null,n.createElement(F,null,a)))},"country-prefix":z,select:ae,button:ie,"google-places":Z,image:Q,hidden:X},fe=e=>{if(_e.hasOwnProperty(e.type)){const t=_e[e.type];return n.createElement(t,e)}return console.error(`Element "${e.type}" not supported by <Form />!`),n.createElement(n.Fragment,null)};var be=(e,t={})=>{const{threshold:a=.5,autoDisconnect:r=!0,onIntersect:o}=t,[s,i]=n.useState(!1),l=n.useRef(null),c=n.useRef(o);n.useEffect((()=>{c.current=o}));const u=n.useCallback((()=>{l.current&&(l.current.disconnect(),l.current=null)}),[]);return n.useEffect((()=>{if(e.current)return l.current=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(i(!0),c.current?.(u),r&&u())}))}),{threshold:a}),l.current.observe(e.current),()=>{l.current&&(l.current.disconnect(),l.current=null)}}),[e,a,r]),[s,u]};exports.BookingUrl=(t,a,n,r,o=null,s=null,i="en")=>{const l={hotel_code:t,check_in:e.format(n.check_in,a.date_format.replace(/m/g,"M")),check_out:e.format(n.check_out,a.date_format.replace(/m/g,"M")),adult_count:n.adult_count,child_count:n.child_count,total_rooms:n.rooms??1,rate_code:!n.promo_codes.length&&o?o:"",promo_code:n.promo_codes.length?n.promo_codes[0]:"",locale:a.locale||i};let c=(u=a.variables,d=l,u.replace(/\$\{(.*?)\}/g,((e,t)=>void 0!==d[t]?d[t]:"")));var u,d;r&&s&&(c+="&room="+s);return`${"undefined"!=typeof window&&m(window.innerWidth)?r?a.mobile_url:a.mobile_url_no_availability:r?a.url:a.url_no_availability}&${c}`.replace(/&&+/g,"&").replace(/&\s*$/,"")},exports.Button=ie,exports.Carousel=me,exports.Checkbox=K,exports.CountryPrefix=z,exports.Form=function({className:e,form:a,setForm:r,errors:o,setErrors:s,beforeSubmit:i,formatParams:l,validate:c,validateResponse:u,onSuccess:d,onFocus:m,onBlur:p,onClick:h,onChange:g,onError:_,afterSubmit:f,loading:y}){const[v,x]=n.useState(!1),C=(e,t=!0)=>n.createElement("div",null,n.createElement("ul",{className:"error"},Object.entries(e).map((([e,a],r)=>n.createElement("li",{key:`error-form${r}`},n.createElement("span",null,t?n.createElement("strong",null,e,":"):""," ",a))))));n.useEffect((()=>{const e=()=>{window.grecaptcha?.execute?x(!0):setTimeout(e,500)};e()}),[]);const k=n.useCallback((async()=>process.env.RECAPTCHA_V3_SITE_KEY?window.grecaptcha?.execute?await window.grecaptcha.execute(process.env.RECAPTCHA_V3_SITE_KEY,{action:a.settings.recaptcha_action??"submit"}):(console.warn("reCAPTCHA not yet loaded."),null):(console.error("RECAPTCHA_V3_SITE_KEY is not defined!"),null)),[v]),$=e=>{if("string"==typeof e){const i=a.fields[e];return n.createElement("div",{className:`${i.type} ${i.type}-${i.name}${i.data?.class?` ${i.type}-${i.data.class}`:""}`,key:`ff-${a.settings.pk}-${e}`},S.has(i.type)?n.createElement(fe,V({className:t({[i.data.class]:Boolean(i.data.class),error:Boolean(o[e])}),onFocus:e=>{m&&m(e)},onBlur:e=>{p&&p(e)},onClick:t=>{if(["checkbox","radio"].includes(i.input_type)){let t={...a};"checkbox"===i.input_type?t.fields={...a.fields,[e]:{...i,value:!i.value}}:t.fields=Object.entries(a.fields).reduce(((e,[t,a])=>(e[t]=a,a.input_name===i.input_name&&(e[t].checked=i.value===e[t].value),e)),{}),n.startTransition((()=>{r(t),o[e]&&s({})}))}h&&h(t)},checked:"radio"===i.input_type?!!i.checked:void 0,onChange:t=>{["checkbox","radio"].includes(i.input_type)||n.startTransition((()=>{r({...a,fields:{...a.fields,[e]:{...i,value:E(i.type,t),data:t.target?.data?{...i.data,...t.target.data}:i.data}}}),o[e]&&s({})})),g&&g(t)}},i,{value:i.value?i.value:""})):n.createElement(fe,i))}return n.createElement("div",{className:`form-section ${e.name}`,key:`ff-${a.settings.pk}-${e.name}`},e.children.map($))};return n.createElement("form",{className:e,action:a.settings.form_submit,method:a.settings.form_method,onSubmit:e=>(async e=>{if(e.preventDefault(),!e.currentTarget.reportValidity())return;let t={},o=[],m=Object.values(a.fields).reduce(((e,a)=>{if(S.has(a.type)){if(a.required&&!a.value){const n=a.label||a.placeholder||a.input_name||"Unknown";return t[a.input_name]=`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is required`,e}if("password"===a.input_type&&o.push(a.input_name),"radio"===a.input_type&&!a.checked)return e;if("submit"===a.input_type)return e;e[a.input_name]=w(a.type,a.value)}return e}),{});if(a.settings.recaptcha_v3&&(o.push("recaptcha_token"),m.recaptcha_token=await k(),m.recaptcha_token||(t.recaptcha="reCAPTCHA failed!")),a.fields.recaptcha&&!m.recaptcha&&(t.recaptcha="Recaptcha is mandatory"),c&&(t={...t,...c(a.fields,m)}),Object.keys(t).length)return void n.startTransition((()=>{s(t),M(C(t,!1))}));if(i&&i(a),l&&(m=l(m)),a.settings.gtm_event){const e=Object.fromEntries(Object.entries(m).filter((([e])=>!o.includes(e))));I(a.settings.gtm_event,{fields:e})}if(!a.settings.form_ajax_request)return e.target.submit();let p={};a.settings.form_submit.startsWith(`${process.env.API_PROTOCOL}://${process.env.API_HOST}/v1/project/request/contact`)&&void 0!==window&&(m.url=window.location.href),a.settings.form_recipient&&(p["recipient-id"]=`${a.settings.form_recipient}`);const h=await b(a.settings.form_submit,m,a.settings.form_method,p);n.startTransition((()=>{if(200!==h.status||u&&!u(h))if(_)_(h);else if(h.errors){let e=Object.entries(h.errors).reduce(((e,[t,a])=>(e[t]=a.join(", "),e)),{});M(C(e)),s(e)}else h.error&&M(C({failed:h.error?n.createElement(F,null,h.error):"Oops. Something went wrong. Please try again later, or contact us at members@tfehotels.com"},!1));else d?d(h,a.settings.form_success_msg):M(a.settings.form_success_msg?n.createElement(F,null,a.settings.form_success_msg):"Success! Your form has been successfully sent. Thank you for reaching out, we will get back to you as soon as possible.","success"),a.settings.form_redirection&&setTimeout((()=>{window.location.href=a.settings.form_redirection}),3e3),r({...a,fields:Object.entries(a.fields).reduce(((e,[t,a])=>(e[t]=!["button","hidden"].includes(a.type)&&S.has(a.type)?{...a,value:""}:a,e)),{})})})),f&&f(h)})(e),noValidate:!0},y?n.createElement(ge,{color:"#00b5ee"}):a.items.map($))},exports.GatsbyLink=pe,exports.GooglePlaces=Z,exports.Icon=T,exports.Image=Q,exports.Input=X,exports.Languages={en:"English",de:"Deutsch",fr:"Français",da:"Dansk"},exports.Link=J,exports.LinkList=ee,exports.Markdown=F,exports.Modal=he,exports.SVG=ne,exports.SearchAvailability=async(t,a,n,r,o,s,i,l=null)=>{if(!i)throw new Error('"hotel_codes" must be defined within the page attributes!');return fetch(`${process.env.SABRE_PROTOCOL}://${process.env.SABRE_HOST}/availability`,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({check_in:e.format(t,"yyyy-MM-dd"),check_out:e.format(a,"yyyy-MM-dd"),hotel_codes:i,adult_count:n,child_count:r,area_codes:[],promo_codes:o,rate_codes:s,price_range:{min:0,max:0},is_mobile:"undefined"!=typeof window&&m(window.innerWidth),language:"en",priority_rates:l})}).then((e=>e.json())).then((e=>(e=>e.success&&Array.isArray(e.data)?(e.data.forEach((e=>{e.room_rates={},e.rates.forEach((t=>t.forEach((t=>{e.room_rates.hasOwnProperty(t.room_type_code)||(e.room_rates[t.room_type_code]=[]),e.room_rates[t.room_type_code].push(t)}))))})),e.data):{})(e)),(e=>{console.log(e)}))},exports.Select=ae,exports.Spinner=ge,exports.Text=re,exports.Textarea=oe,exports.Title=se,exports.Toast=P,exports.addGTMEvent=I,exports.addHostPrefix=e=>`${"staging"===process.env.ENV?"staging.":"testing"===process.env.ENV?"test.":""}${e}`,exports.animateJSX=(e,t="presence")=>`jsx__${t} jsx__${t}__${["from","leave"].includes(e.stage)?"loading":"loaded"}`,exports.apiLink=(e="",t=null)=>`${H(`${process.env.API_PROTOCOL}://${process.env.API_HOST}`,e)}${t?`?${new URLSearchParams(t).toString()}`:""}`,exports.cacheSearchParams=e=>{const{hotel_codes:t,rate_codes:a,promo_codes:n,search_id:r,search_term:o,search_index:s,...i}=e;return localStorage.setItem("search-params",JSON.stringify(i))},exports.cachedSearchParams=B,exports.classNames=f,exports.countryPrefixes=k,exports.dealLink=e=>{if(!process.env.DEALS_ROOT_SLUG)throw new Error("The env variable DEALS_ROOT_SLUG is not defined!");return H(process.env.DEALS_ROOT_SLUG,e)},exports.decodeQuotePlus=e=>decodeURIComponent(e.replace(/\+/g,"%20")),exports.defaultSearchParams=(t,a)=>{const n=B()||{},r={check_in:e.addDays(new Date,15),check_out:e.addDays(new Date,17),adult_count:2,child_count:0,rooms:1,promo_codes:[],rate_codes:[],search_term:"",search_id:null,search_index:null};return Object.keys(r).reduce(((e,o)=>(e[o]=[a[o],t[o],n[o],r[o]].find((e=>void 0!==e)),e)),{})},exports.deleteUserSession=()=>{localStorage.removeItem("user")},exports.deleteUserSettings=()=>localStorage.removeItem("userSettings"),exports.deviceId=e=>e>1023?"d":e>768?"t":"m",exports.europeanCountryCodesSet=$,exports.fetchDeal=async({deal_id:e=null,rate_code:t=null,promo_code:a=null,project_id:n=null,property_id:r=null,fields:o=null},s="en")=>{const i=`${process.env.API_PROTOCOL}://${process.env.API_HOST}/v1/project/request/hotel-deal?language=${s}`;try{const s=await fetch(i,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({deal_id:e,rate_code:t,promo_code:a,project_id:n,property_id:r,fields:o})});if(!s.ok)throw new Error(`Hotel deal (${i}) HTTP error: ${s.status}`);let l=await s.json();return l.rateCode=t,l.promoCode=a,l}catch(e){console.error(`Failed to fetch Hotel deal (${i})`,e)}},exports.formatOutput=R,exports.geoLocation=async()=>{try{const e=await fetch("https://geo.tfehotels.com/");if(!e.ok)throw new Error(`Geolocation (https://geo.tfehotels.com/) HTTP error: ${e.status}`);return await e.json()}catch(e){console.error("Failed to fetch Geolocation (https://geo.tfehotels.com/)",e)}return null},exports.getInputEventValue=E,exports.getInputHumanValue=w,exports.getThumb=e=>e.image||e.mobile_image?"undefined"!=typeof window&&m(window.innerWidth)?e.mobile_image?C(e.mobile_image):C(e.image):e.image?C(e.image):C(e.mobile_image):"",exports.getViewPort=()=>{if("undefined"==typeof window)throw new Error("getViewPort() requires browser window!");return m(window.innerWidth)?"m":p(window.innerWidth)?"t":"d"},exports.hashEmail=async function(e){const t=new TextEncoder,a=await crypto.subtle.digest("SHA-256",t.encode(e.trim().toLowerCase()));return Array.from(new Uint8Array(a)).map((e=>e.toString(16).padStart(2,"0"))).join("")},exports.hotelOptionsByCity=(e,t)=>{const a=["Sydney","Melbourne","Brisbane","Perth","Hobart","Canberra","Adelaide","Gold Coast","Darwin","Auckland","Wellington","Queenstown","Singapore"],n={};for(const t in e)if(e.hasOwnProperty(t)){const a=e[t];n[a.city]||(n[a.city]=[]),n[a.city].push({label:a.name,value:t,sort:a.sort,country_id:a.country_id})}let r=Object.keys(n).map((e=>({label:e,options:n[e].sort(((e,t)=>e.sort-t.sort))})));return t?r.sort(((e,n)=>{const r=e.options.length>0?e.options[0].country_id:null,o=n.options.length>0?n.options[0].country_id:null,s=r&&void 0!==t[r]?t[r]:1/0,i=o&&void 0!==t[o]?t[o]:1/0;if(s!==i)return s-i;return(a.includes(e.label)?a.indexOf(e.label):1/0)-(a.includes(n.label)?a.indexOf(n.label):1/0)})):r.sort(((e,t)=>(a.includes(e.label)?a.indexOf(e.label):1/0)-(a.includes(t.label)?a.indexOf(t.label):1/0))),r},exports.human_number=function(e,t=2){return e.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:t})},exports.intersects=function(e,t){e.size>t.size&&([e,t]=[t,e]);for(const a of e)if(t.has(a))return!0;return!1},exports.isDesktop=h,exports.isIOS=()=>/iPad|iPhone|iPod/.test(navigator.userAgent),exports.isMobile=m,exports.isSubset=function(e,t){for(const a of e)if(!t.has(a))return!1;return!0},exports.isTablet=p,exports.joinAddress=x,exports.joinPaths=H,exports.json_request=b,exports.loadUserSession=()=>{const e=localStorage.getItem("user");return e?JSON.parse(e):null},exports.loadUserSettings=(e={})=>{const t=localStorage.getItem("userSettings");return t?JSON.parse(t):{currency:"AUD",zone:null,countryCode:null,...e}},exports.localizedAddress=function(e,t={}){const{city:a,address1:n,address2:r,postalCode:o}=t;let{stateId:s}=t;s&&/^[a-zA-Z]{2}-/.test(s)&&(s=s.split("-")[1]);const i=[n,r].filter(Boolean).join(" ");let l;const c=e?.toLowerCase();if(["de","dk","at","ch"].includes(c)){l=[i,[o,a].filter(Boolean).join(" ")]}else l="hu"===c?[a,i,o]:[i,a,s,o];return x(l)},exports.minimumSlides=(e,t)=>t.length>=e?t:[].concat(...new Array(Math.ceil(e/t.length)).fill(t)),exports.optimizedThumb=C,exports.parseQueryParams=function(e,t={}){return e?(t={rate_code:"rate_codes",promo_code:"promo_codes",...t},e.slice(1).split("&").reduce(((e,a)=>{let[n,r]=a.split("=");return n=decodeURIComponent(n),r=decodeURIComponent(r||""),t[n]&&(n=t[n]),e[n]=j.hasOwnProperty(n)?j[n](r):r,e}),{})):{}},exports.preloadImages=async e=>{e.forEach((e=>{if(e){(new Image).src=e}}))},exports.pricePerNight=(e,t)=>(parseFloat(e)/t).toFixed(2),exports.roomFeatures=["balcony","sofa_bed","kitchen","kitchenette","laundry_machine"],exports.saveUserSession=e=>{localStorage.setItem("user",JSON.stringify({loyaltyprofileId:e.loyaltyprofileId,profile_id:e.profile_id,title:e.title,first_name:e.first_name,last_name:e.last_name,email:e.email,zip:e.zip,country_code:e.country_code,MobilePhoneCountryCode:e.MobilePhoneCountryCode,mobile:e.mobile,date_of_birth:e.date_of_birth,language:e.language}))},exports.saveUserSettings=e=>localStorage.setItem("userSettings",JSON.stringify(e)),exports.scrollToChild=g,exports.scrollToElement=async e=>{document.getElementById(e)?.scrollIntoView({behavior:"smooth"})},exports.search=async(e,t,a,n,r,o,s,i=!1,l=[process.env.PROJECT])=>{const c=[],u=[{term:{language:o}},{terms:{project:l}}],d=i?"hotel":a||"neighbourhood,city,country,hotel";n?i&&"hotel"!==a?u.push({term:{[`${a}_id`]:n}}):u.push({term:{id:n}}):c.push({multi_match:{query:t,type:"bool_prefix",fields:["name^10","name.substring^1"],operator:"and"}});const m=await fetch(`${process.env.ELASTICSEARCH_URL}/${d}/_search`,{method:"POST",signal:e?e.signal:void 0,headers:{"Content-Type":"application/json"},body:JSON.stringify({size:s,_source:r,track_total_hits:!1,query:{bool:{must:c,filter:u}},collapse:{field:"id"}})});if(!m.ok)throw new Error(`HTTP ${m.status}`);const p=await m.json();return R(p?.hits?.hits?p.hits.hits:[])},exports.siteUrl=(e="",t="")=>`${process.env.PROTOCOL}://${t||process.env.HOST}${e}`,exports.sortHotels=(e,t,a=!1,n="asc")=>a?e.sort(((e,a)=>{const r=Number(Boolean(t[e.id]?.rate)),o=Number(Boolean(t[a.id]?.rate));if(r!==o)return o-r;if(r&&o){const s=r?parseFloat(t[e.id]?.rate):1/0,i=o?parseFloat(t[a.id]?.rate):1/0;if(s!==i)return"asc"===n?s-i:i-s}return e.recommended_order-a.recommended_order})):e.sort(((e,t)=>e.recommended_order-t.recommended_order)),exports.sortRooms=(e,t,a=!1,n="asc")=>a?e.sort(((e,a)=>{const r=Number(Boolean(t[e.booking_engine_code])),o=Number(Boolean(t[a.booking_engine_code]));if(r!==o)return o-r;if(r&&o){const s=r?parseFloat(t[e.booking_engine_code][0].total):1/0,i=o?parseFloat(t[a.booking_engine_code][0].total):1/0;if(s!==i)return"asc"===n?s-i:i-s}return e.sort-a.sort})):e.sort(((e,t)=>e.sort-t.sort)),exports.sp_to_qs=(t,a,n,r,o,s,i=void 0,l=1,c=null,u=null,d=null)=>`?check_in=${e.format(t,"yyyy-MM-dd")}&check_out=${e.format(a,"yyyy-MM-dd")}&adult_count=${n}&child_count=${r}&promo_code=${s?.length?s[0]:""}&rate_code=${o?.length?o[0]:""}${i?`&hotel_codes=${i}`:""}&rooms=${l}${c?`&search_term=${encodeURIComponent(c)}`:""}${u?`&search_id=${u}`:""}${d?`&search_index=${d}`:""}`,exports.ssoURL=e=>{if(!process.env.SABRE_SSO_HOST)throw new Error("The env variable SABRE_SSO_HOST is not defined!");if("development"!==process.env.ENV){const t=[".co.nz",".com.au",".com",".co",".au",".nz"].find((e=>process.env.SABRE_SSO_HOST.endsWith(e)));if(t&&process.env.HOST&&!process.env.HOST.endsWith(t)){const t=process.env.HOST.replace(/^(test\.|staging\.)/,"");return`${process.env.SABRE_SSO_PROTOCOL}://${process.env.SABRE_SSO_HOST?.split(".")[0]}.${t}${e}`}}return`${process.env.SABRE_SSO_PROTOCOL}://${process.env.SABRE_SSO_HOST}${e}`},exports.tagExists=(e,...t)=>{for(const a of Object.keys(e))if(t.includes(a))return!0;return!1},exports.toImageElement=(e,t={})=>Object.entries(e).reduce(((e,[a,n])=>(e[t[a]||a]=n,e)),{type:"image",title:"",loading:"eager",image:void 0,mobile_image:void 0,mobile_file:void 0}),exports.toPhrase=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/[_-]/g," ").toLowerCase(),exports.toastMsg=M,exports.tripadvisorRatingURL=e=>`https://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/${(Math.floor(2*parseFloat(e))/2).toFixed(1)}-41022-5.svg`,exports.useIntersectionObserver=be,exports.useViewport=function(){const[e,t]=n.useState("d");return n.useEffect((()=>{const a=()=>{const a=window.innerWidth;if("m"===e){if(m(a))return}else if(e.startsWith("t")){if(p(a))return}else if("d"===e&&h(a))return;n.startTransition((()=>t(m(a)?"m":p(a)?a<=950?"tp":"tl":"d")))};return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a)}}),[e]),e},exports.zoneFromCountryCode=e=>{switch(e){case"GB":case"UK":return"UK";case"AU":return"AU";case"NZ":return"NZ";case"SG":return"AS";default:return e&&$.has(e)?"EU":"AU"}},exports.zoneOrder={EU:["EU","UK","AU","NZ","AS"],UK:["UK","EU","AU","NZ","AS"],AU:["AU","NZ","EU","UK","AS"],NZ:["NZ","AU","EU","UK","AS"],AS:["AS","AU","NZ","EU","UK"]};
1
+ "use strict";var e=require("date-fns"),t=require("classnames"),a=require("react-hot-toast"),n=require("react"),r=require("goober"),o=require("@fortawesome/react-fontawesome"),s=require("marked"),i=require("html-react-parser"),l=require("react-google-autocomplete"),c=require("gatsby-plugin-image"),u=require("gatsby"),d=require("react-select");const m=e=>e<769,p=e=>e>=769&&e<=1024,h=e=>e>1024,g=(e,t)=>{const a=e.style.display;"block"!==a&&(e.style.display="block");const n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),o=r.top-n.top,s=n.bottom-r.bottom;o>=0&&s>=0||(Math.abs(o)<Math.abs(s)?e.scrollTop+=o:e.scrollTop-=s),e.style.display=a},_=(e,t)=>t?!!e.length&&!e.includes(t):!e.length,f=(e,a=null)=>(a&&(e.hidden=_(a,""),e.hidden_mobile=_(a,"m"),e.hidden_tablet=_(a,"t"),e.hidden_desktop=_(a,"d")),t(e));async function b(){const e=await caches.keys();await Promise.all(e.map((e=>caches.delete(e))))}function y(){b(),"undefined"!=typeof window&&(window.localStorage.clear(),window.sessionStorage.clear())}const E=e=>localStorage.setItem("userSettings",JSON.stringify(e));const v=async(e,t,a="post",n={})=>{e.includes(process.env.API_HOST)&&(n["project-id"]=process.env.PROJECT);let r={headers:{"Content-Type":"application/json",...n},method:a.toUpperCase()};"post"===a?r.body=JSON.stringify(t):e=`${e}?${new URLSearchParams(Object.entries(t).map((([e,t])=>[e,null===t?"":`${t}`])))}`;try{let t=await fetch(e,r);return{...await t.json(),status:t.status}}catch(e){return console.error(e),{success:!1,error:"Request failed",status:400}}},w={select:e=>e.value,input:e=>e.target.value,textarea:e=>e.target.value,"google-places":e=>e.target.value},S=(e,t)=>w.hasOwnProperty(e)?w[e](t):t,x={},C=(e,t)=>x.hasOwnProperty(e)?x[e](t):t,k=new Set(["input","select","textarea","checkbox","button","recaptcha2","google-places","country-prefix","country","hidden"]),$=e=>e.filter((e=>!!e)).join(", ");const N=e=>e.optimized?`${e.url}${e.name}-20w.webp`:e.url,A=[["AF","93","Afghanistan"],["AL","355","Albania"],["DZ","213","Algeria"],["AD","376","Andorra"],["AO","244","Angola"],["AG","1268","Antigua and Barbuda"],["AR","54","Argentina"],["AM","374","Armenia"],["AW","297","Aruba"],["AU","61","Australia"],["AT","43","Austria"],["AZ","994","Azerbaijan"],["BS","1242","Bahamas"],["BH","973","Bahrain"],["BD","880","Bangladesh"],["BB","1246","Barbados"],["BY","375","Belarus"],["BE","32","Belgium"],["BZ","501","Belize"],["BJ","229","Benin"],["BT","975","Bhutan"],["BO","591","Bolivia"],["BA","387","Bosnia and Herzegovina"],["BW","267","Botswana"],["BR","55","Brazil"],["IO","246","British Indian Ocean Territory"],["BN","673","Brunei"],["BG","359","Bulgaria"],["BF","226","Burkina Faso"],["BI","257","Burundi"],["KH","855","Cambodia"],["CM","237","Cameroon"],["CA","1","Canada"],["CV","238","Cape Verde"],["BQ","599","Caribbean Netherlands"],["CF","236","Central African Republic"],["TD","235","Chad"],["CL","56","Chile"],["CN","86","China"],["CO","57","Colombia"],["KM","269","Comoros"],["CD","243","Congo"],["CG","242","Congo"],["CR","506","Costa Rica"],["CI","225","Côte d'Ivoire"],["HR","385","Croatia"],["CU","53","Cuba"],["CW","599","Curaçao"],["CY","357","Cyprus"],["CZ","420","Czech Republic"],["DK","45","Denmark"],["DJ","253","Djibouti"],["DM","1767","Dominica"],["DO","1","Dominican Republic"],["EC","593","Ecuador"],["EG","20","Egypt"],["SV","503","El Salvador"],["GQ","240","Equatorial Guinea"],["ER","291","Eritrea"],["EE","372","Estonia"],["ET","251","Ethiopia"],["FJ","679","Fiji"],["FI","358","Finland"],["FR","33","France"],["GF","594","French Guiana"],["PF","689","French Polynesia"],["GA","241","Gabon"],["GM","220","Gambia"],["GE","995","Georgia"],["DE","49","Germany"],["GH","233","Ghana"],["GR","30","Greece"],["GD","1473","Grenada"],["GP","590","Guadeloupe"],["GU","1671","Guam"],["GT","502","Guatemala"],["GN","224","Guinea"],["GW","245","Guinea-Bissau"],["GY","592","Guyana"],["HT","509","Haiti"],["HN","504","Honduras"],["HK","852","Hong Kong"],["HU","36","Hungary"],["IS","354","Iceland"],["IN","91","India"],["ID","62","Indonesia"],["IR","98","Iran"],["IQ","964","Iraq"],["IE","353","Ireland"],["IL","972","Israel"],["IT","39","Italy"],["JM","1876","Jamaica"],["JP","81","Japan"],["JO","962","Jordan"],["KZ","7","Kazakhstan"],["KE","254","Kenya"],["KI","686","Kiribati"],["XK","383","Kosovo"],["KW","965","Kuwait"],["KG","996","Kyrgyzstan"],["LA","856","Laos"],["LV","371","Latvia"],["LB","961","Lebanon"],["LS","266","Lesotho"],["LR","231","Liberia"],["LY","218","Libya"],["LI","423","Liechtenstein"],["LT","370","Lithuania"],["LU","352","Luxembourg"],["MO","853","Macau"],["MK","389","Macedonia"],["MG","261","Madagascar"],["MW","265","Malawi"],["MY","60","Malaysia"],["MV","960","Maldives"],["ML","223","Mali"],["MT","356","Malta"],["MH","692","Marshall Islands"],["MQ","596","Martinique"],["MR","222","Mauritania"],["MU","230","Mauritius"],["MX","52","Mexico"],["FM","691","Micronesia"],["MD","373","Moldova"],["MC","377","Monaco"],["MN","976","Mongolia"],["ME","382","Montenegro"],["MA","212","Morocco"],["MZ","258","Mozambique"],["MM","95","Myanmar"],["NA","264","Namibia"],["NR","674","Nauru"],["NP","977","Nepal"],["NL","31","Netherlands"],["NC","687","New Caledonia"],["NZ","64","New Zealand"],["NI","505","Nicaragua"],["NE","227","Niger"],["NG","234","Nigeria"],["KP","850","North Korea"],["NO","47","Norway"],["OM","968","Oman"],["PK","92","Pakistan"],["PW","680","Palau"],["PS","970","Palestine"],["PA","507","Panama"],["PG","675","Papua New Guinea"],["PY","595","Paraguay"],["PE","51","Peru"],["PH","63","Philippines"],["PL","48","Poland"],["PT","351","Portugal"],["PR","1","Puerto Rico"],["QA","974","Qatar"],["RE","262","Réunion"],["RO","40","Romania"],["RU","7","Russia"],["RW","250","Rwanda"],["KN","1869","Saint Kitts and Nevis"],["LC","1758","Saint Lucia"],["VC","1784","Saint Vincent and the Grenadines"],["WS","685","Samoa"],["SM","378","San Marino"],["ST","239","São Tomé and Príncipe"],["SA","966","Saudi Arabia"],["SN","221","Senegal"],["RS","381","Serbia"],["SC","248","Seychelles"],["SL","232","Sierra Leone"],["SG","65","Singapore"],["SK","421","Slovakia"],["SI","386","Slovenia"],["SB","677","Solomon Islands"],["SO","252","Somalia"],["ZA","27","South Africa"],["KR","82","South Korea"],["SS","211","South Sudan"],["ES","34","Spain"],["LK","94","Sri Lanka"],["SD","249","Sudan"],["SR","597","Suriname"],["SZ","268","Swaziland"],["SE","46","Sweden"],["CH","41","Switzerland"],["SY","963","Syria"],["TW","886","Taiwan"],["TJ","992","Tajikistan"],["TZ","255","Tanzania"],["TH","66","Thailand"],["TL","670","Timor-Leste"],["TG","228","Togo"],["TO","676","Tonga"],["TT","1868","Trinidad and Tobago"],["TN","216","Tunisia"],["TR","90","Turkey"],["TM","993","Turkmenistan"],["TV","688","Tuvalu"],["UG","256","Uganda"],["UA","380","Ukraine"],["AE","971","United Arab Emirates"],["GB","44","United Kingdom"],["US","1","United States"],["UY","598","Uruguay"],["UZ","998","Uzbekistan"],["VU","678","Vanuatu"],["VA","39","Vatican City"],["VE","58","Venezuela"],["VN","84","Vietnam"],["YE","967","Yemen"],["ZM","260","Zambia"],["ZW","263","Zimbabwe"]],T=new Set(["AD","AL","AT","BA","BE","BG","BY","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MC","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","SM","TR","UA","VA"]),O={FAB:"fab",FAS:"fas"},P=({icon:e,className:t,onClick:a,color:r,width:s,height:i})=>O.hasOwnProperty(e.group)?n.createElement(o.FontAwesomeIcon,{className:t,color:r,onClick:a,width:s,height:i,icon:[O[e.group],e.icon]}):n.createElement("img",{className:t,loading:"lazy",width:s,height:i,alt:e.icon,onClick:a,src:`/icons/${e.group}/${e.icon}.svg`}),L=e=>`\n0% {transform: translate3d(0,${-200*e}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`,I=e=>`\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${-150*e}%,-1px) scale(.6); opacity:0;}\n`,M=(()=>{let e;return()=>{if(void 0===e&&"undefined"!=typeof window){const t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})(),B=({id:e,visible:t,message:o,height:s,position:i,variant:l})=>{const c=s?((e,t)=>{const a=e.includes("top")?1:-1,[n,o]=M()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[L(a),I(a)];return{animation:t?`${r.keyframes(n)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${r.keyframes(o)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}})(i||"top-center",t):{opacity:0};return n.createElement("div",{className:`toast ${t?"animate-enter":"animate-leave"} ${l}`,style:{...c}},n.createElement("button",{className:"close",onClick:()=>a.toast.dismiss(e)},n.createElement(P,{icon:{icon:"close",group:"GLO"}})),o)},R=(e,t="error",r=1e4)=>{a.custom((a=>n.createElement(B,{id:a.id,visible:a.visible,message:e,variant:t,height:a.height,position:a.position})),{duration:r})};const U=(e,t={})=>{"undefined"!=typeof window&&window.dataLayer?window.dataLayer.push({...t,event:e}):console.warn(`GTM Event "${e}" skipped: dataLayer not found.`)},G=()=>{if("undefined"==typeof window)return null;let t=localStorage.getItem("search-params");return t&&(t=JSON.parse(t),t.check_in=t.check_in?new Date(t.check_in):new Date,t.check_out=t.check_out?new Date(t.check_out):e.addDays(new Date,1),t.check_in<new Date)?null:t},D=e=>e.map((e=>(e._index=e._index.slice(0,-2),e._source.images?.length&&(e._source.images=e._source.images.map((e=>({type:"image",title:"",data:{},loading:"eager",image:e})))),e._source.location&&(e._source.location={lat:e._source.location.lat,lng:e._source.location.lon}),e))),j=t=>{try{return t?e.parseISO(t):void 0}catch(e){return}},H=e=>{try{return e?parseInt(e):void 0}catch(e){return}},F=e=>e?[e]:[],K={check_in:j,check_out:j,child_count:H,adult_count:H,rate_codes:F,promo_codes:F};const V=(e,t)=>`${e.replace(new RegExp("/$"),"")}/${t.replace(new RegExp("^/"),"")}`;function z({children:e,className:t,tagAttrs:a,onClick:r}){const o=new s.marked.Renderer;o.link=(e,t,n)=>{let r={href:e,title:t??"",target:"_blank"};return a?.a&&(r={...r,...a?.a}),`<a ${Object.entries(r).map((([e,t])=>`${e}="${t}"`)).join(" ")}>${n}</a>`},s.marked.setOptions({renderer:o});const l=()=>i(e?s.marked(e):"");return n.createElement(n.Fragment,null,t||r?n.createElement("div",{className:t,onClick:r},l()):n.createElement(n.Fragment,null,l()))}function q({className:e,label:t,description:a,...r}){return n.createElement("label",{className:`checkbox${r.value?" checked":""}${e?` ${e}`:""}`,onClick:r.onClick,onChange:r.onChange},!!t&&n.createElement("span",null,t),n.createElement("svg",{id:r.id,width:r.width?r.width:30,height:r.height?r.height:30,viewBox:"0 0 440 440"},n.createElement("path",{className:"box",d:"M 72 136 C 72 100.654 100.654 72 136 72 L 304 72 C 339.346 72 368 100.654 368 136 L 368 304 C 368 339.346 339.346 368 304 368 L 136 368 C 100.654 368 72 339.346 72 304 Z",fill:r.color?r.color:"#58595b"}),n.createElement("path",{className:"tick",d:"M 160 180 L 210 250 L 340 130",transform:"translate(40 65) rotate(-10 70.904 438.687)",fill:"transparent",strokeWidth:30,stroke:"white",strokeLinecap:"square",strokeLinejoin:"miter"})),!!a&&n.createElement("div",null,n.createElement(z,null,a)))}function W({className:e,label:t,description:a,input_name:r,onClick:o,onChange:s,value:i,...l}){const[c,u]=n.useState(!1),[d,m]=n.useState(0),[p,h]=n.useState(""),_=n.useRef(null),f=n.useRef(null),b=n.useCallback((e=>{s?.(A[e][1]),n.startTransition((()=>{u(!1),m(e),h(A[e][2])}))}),[s,A]),y=n.useCallback((()=>{if(!f.current)return;const e=f.current.querySelector(`#${l.name??"country-prefix"}__${A[d][0]}`);e&&g(f.current,e)}),[d,A]);return n.useEffect((()=>{const e=e=>{_.current&&!_.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&n.startTransition((()=>u(!1)))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[_,f]),n.useEffect((()=>{y()}),[d]),n.useEffect((()=>{document.body.classList[c?"add":"remove"]("no-scroll"),_.current&&c&&_.current.focus()}),[c]),n.createElement("label",{className:"country-prefix "+(e?` ${e}`:"")},!!t&&n.createElement("span",null,t),n.createElement("div",{className:"selected-prefix",onClick:()=>n.startTransition((()=>u(!0)))},"+",i??A[0][1],n.createElement(P,{className:c?"opened":"",icon:{icon:"chevron-right",group:"FAS"}})),n.createElement("div",{className:"countries-prefixes"+(c?" show":"")},n.createElement("input",{ref:_,name:r,value:p,onChange:e=>function(e){n.startTransition((()=>{h(e)}));let t=A.findIndex((e=>e[2].toLowerCase().startsWith(p.toLowerCase())));t>=0&&n.startTransition((()=>m(t)))}(e.target.value),onKeyDown:e=>{const{key:t}=e;"ArrowDown"===t||"ArrowUp"===t?n.startTransition((()=>{const e="ArrowDown"===t?Math.min(d+1,A.length-1):Math.max(d-1,0);m(e),h(A[e][2])})):"Escape"===t?n.startTransition((()=>u(!1))):"Enter"===t&&(e.preventDefault(),e.stopPropagation(),b(d))}}),n.createElement("ul",{ref:f,role:"listbox",tabIndex:-1,"aria-activedescendant":`${l.name??"country-prefix"}__${A[d][0]}`},A.map((([e,t,a],r)=>n.createElement("li",{className:r===d?"selected":"",role:"option",onClick:()=>b(r),"aria-selected":r===d,"aria-label":`${a} +${t}`,id:`${l.name??"country-prefix"}__${e}`,key:`${l.name??"country-prefix"}__${e}`},a," +",t))))),!!a&&n.createElement("div",null,n.createElement(z,null,a)))}function Z(){return Z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},Z.apply(this,arguments)}const J=e=>{if(e.address_components)for(const t of e.address_components)if("country"==t.types[0])return t.short_name;return null};var Y=({label:e,name:t,input_name:a,value:r,defaultCountryCode:o,onChange:s,onClick:i,onFocus:c,onBlur:u,data:d,...m})=>{const[p,h]=n.useState();if(!process.env.GOOGLEMAPS_KEY)throw new Error("The environment variable GOOGLEMAPS_KEY is not defined!");const{ref:g}=l.usePlacesWidget({apiKey:process.env.GOOGLEMAPS_KEY,onPlaceSelected:e=>h({target:{value:e.formatted_address,data:{countryCode:J(e)}}}),...d});return n.useEffect((()=>{s&&p&&s(p)}),[p]),n.useEffect((()=>{if(!o||r||p)return;const e=A.find((e=>e[0]===o.toLowerCase()));e&&h({target:{value:e[2],data:{countryCode:o}}})}),[o]),n.createElement("label",{className:`google-places label-${t}`},!!e&&n.createElement("span",null,e),n.createElement("input",Z({ref:g,name:a,autoComplete:"off",onChange:s,onClick:i,onFocus:c,onBlur:u,value:r,placeholder:m.placeholder??void 0},m)))};const Q=({animate:e=!0,...t})=>n.createElement("a",{className:t.className,title:t.title,href:t.to,target:t.target?t.target:t.to&&"#"!==t.to[0]?"_blank":void 0,onClick:t.onClick},t.children);var X=({icon:e,...t})=>{const a=t.className?t.className:t.data?.class?t.data.class:"",r=t.page_slug?u.Link:Q;let o=t.page_slug?`${t.page_slug}${t.query_params?`?${t.query_params}`:""}`:t.external_link??"";return t.anchor&&(o=`${o}#${t.anchor}`),n.createElement(r,{className:`${a}${t.display_on?` ${f({},t.display_on)}`:""}${t.mobile_text?" viewport-text":""}`,to:o,title:t.title,target:t.target,onClick:t.onClick,animate:t.animate},!!e&&n.createElement(P,{icon:e,width:e.width,height:e.height}),t.children?t.children:t.mobile_text?n.createElement(n.Fragment,null,n.createElement("span",{className:"d-text"},t.text),n.createElement("span",{className:"m-text"},t.mobile_text)):t.text)};const ee=e=>{if(!e)return;let t={src:e.url,sizes:"100vw",srcSet:""},a=[],n={fallback:e.url};const r=[e.width,360,769,1024,1216,1408].sort(((e,t)=>e-t));if(e.optimized){t.src=e.url+e.name+"-"+e.width+"w.jpg",n.fallback=e.url+e.name+"-20w.jpg",a.push({sizes:"100vw",srcSet:"",type:"image/avif"}),a.push({sizes:"100vw",srcSet:"",type:"image/webp"});for(let n in r){if(r[n]>e.width)break;let o=("0"===n?"":",")+e.url+e.name+"-"+r[n];t.srcSet+=o+"w.jpg "+r[n]+"w",a[0].srcSet+=o+"w.avif "+r[n]+"w",a[1].srcSet+=o+"w.webp "+r[n]+"w"}}return c.getImage({childImageSharp:{gatsbyImageData:{backgroundColor:"transparent",height:e.height/e.width,width:1,layout:"fullWidth",placeholder:n,images:{fallback:t,sources:a}}}})};var te=({imageData:e,...a})=>{let r=e??(()=>{const e=ee(a.image),t=ee(a.mobile_image);return e&&t?c.withArtDirection(e,[{media:"(max-width: 768px)",image:t}]):e})();if(!r)return n.createElement("span",null,"Missing image!");const o={className:t({"mobile-img":!!a.image&&!!a.mobile_image,[a.className]:!!a.className}),image:r,onLoad:a.onLoad,alt:a.image?.alt?a.image.alt:a.image?.name?.replaceAll("-"," ")??"",style:a.style};return a.page_slug||a.external_link?n.createElement(X,{page_slug:a.page_slug,external_link:a.external_link,title:a.link_text},n.createElement(c.GatsbyImage,o)):n.createElement(c.GatsbyImage,o)};var ae=({label:e,type:t,input_type:a,description:r,name:o,input_name:s,icon:i,iconOnClick:l,read_only:c,className:u,...d})=>n.createElement("label",{className:`input label-${o}${"hidden"===a?" hidden":""}${u?` label-${u}`:""}`},!!e&&n.createElement("span",null,e),!!i&&n.createElement(P,{icon:i,onClick:l}),n.createElement("input",Z({type:a,name:s,readOnly:c,className:u},d)),!!r&&n.createElement("div",{className:"desc"},n.createElement("div",null,n.createElement(z,null,r))));var ne=({pk:e,...t})=>n.createElement("ul",{className:t.className},t.links.map(((a,r)=>n.createElement("li",{key:`LinkList${e}-${r}`},n.createElement(X,a,t.children)))));const re=(e,t)=>{for(let a of e){if(a.hasOwnProperty("options")){for(let e of a.options)if(t===e.value)return e;return a}if(t===a.value)return a}return null};var oe=({value:e,styles:t,options:a,label:r,scrollDisabledOnClose:o,...s})=>{const i=(e=>Array.isArray(e)?e:"string"==typeof e[Object.keys(e)[0]]?Object.entries(e).reduce(((e,[t,a])=>(e.push({label:a,value:t}),e)),[]):Object.entries(e).reduce(((e,[t,a])=>(e.push({label:t,options:Object.entries(a).reduce(((e,[t,a])=>[...e,{label:a,value:t}]),[])}),e)),[]))(a);return n.createElement("label",{className:"label-"+(s.className?s.className:s.name)},!!r&&n.createElement("span",null,r),n.createElement(d,Z({options:i,value:"string"==typeof e?re(i,e):e,styles:t,onMenuOpen:()=>document.body.classList.add("no-scroll"),onMenuClose:()=>!o&&document.body.classList.remove("no-scroll"),classNamePrefix:"select"},s)))};var se=e=>n.createElement("img",{className:e.className,src:e.file.url});var ie=({text:e,icon:t,...a})=>n.createElement("div",{className:a.className},!!t&&n.createElement(P,{icon:t,width:t.width,height:t.height})," ",n.createElement(z,{tagAttrs:a.tagAttrs},e));var le=({label:e,...t})=>n.createElement("label",{className:`textarea label-${t.name}`},!!e&&n.createElement("span",null,e),n.createElement("textarea",t));var ce=e=>{const t=n.useMemo((()=>e.title&&"#"===e.title[0]?e.title:`### ${e.title}`),[e.title]);return n.createElement(z,{className:e.className,onClick:e.onClick},t)};var ue=({...e})=>n.createElement("button",{className:e.className?e.className:e.data?.class?e.data.class:void 0,type:e.input_type??"button",onClick:e.onClick},e.value);const de=e=>{const{children:t,icon:a,...r}=e;return n.createElement("button",Z({className:"embla__button embla__button--prev",type:"button"},r),a||n.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},n.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"})),t)},me=e=>{const{children:t,icon:a,...r}=e;return n.createElement("button",Z({className:"embla__button embla__button--next",type:"button"},r),a||n.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},n.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"})),t)},pe=e=>{const{children:t,...a}=e;return n.createElement("button",Z({type:"button"},a),t)},he={mobile:"(max-width: 768px)",tablet:"(min-width: 769px) and (max-width: 1024px)",tabletPortrait:"(min-width: 769px) and (max-width: 950px)",tabletLandscape:"(min-width: 951px) and (max-width: 1024px)",desktop:"(min-width: 1025px) and (max-width: 1215px)",wide:"(min-width: 1216px) and (max-width: 1407)",fullhd:"(min-width: 1408px)"};var ge=({id:e,emblaRef:t,emblaApi:a,slidesPerView:r,slidesPerViewport:o,slides:s,gap:i,height:l,showButtons:c,showDots:u,showProgress:d,showScroll:m,prevIcon:p,nextIcon:h,className:g})=>{const[_,f]=n.useState(0),{selectedIndex:b,scrollSnaps:y,onDotButtonClick:E}=((e,t)=>{const[a,r]=n.useState(0),[o,s]=n.useState([]),i=n.useCallback((t=>{e&&e.scrollTo(t)}),[e]),l=n.useCallback((e=>{s(e.scrollSnapList())}),[]),c=n.useCallback((e=>{r(e.selectedScrollSnap())}),[]);return n.useEffect((()=>{e&&t&&(l(e),c(e),e.on("reInit",l),e.on("reInit",c),e.on("select",c))}),[e,l,c]),{selectedIndex:a,scrollSnaps:o,onDotButtonClick:i}})(a,u),[v,w]=n.useState({}),S=n.useCallback((e=>{const t=Math.max(0,Math.min(1,e.scrollProgress()));f(100*t)}),[]),{prevBtnDisabled:x,nextBtnDisabled:C,onPrevButtonClick:k,onNextButtonClick:$}=((e,t)=>{const[a,r]=n.useState(!0),[o,s]=n.useState(!0),i=n.useCallback((()=>{e&&e.scrollPrev()}),[e]),l=n.useCallback((()=>{e&&e.scrollNext()}),[e]),c=n.useCallback((e=>{r(!e.canScrollPrev()),s(!e.canScrollNext())}),[]);return n.useEffect((()=>{e&&t&&(c(e),e.on("reInit",c),e.on("select",c))}),[e,c]),{prevBtnDisabled:a,nextBtnDisabled:o,onPrevButtonClick:i,onNextButtonClick:l}})(a,c);return n.useEffect((()=>{a&&(d||m)&&(S(a),a.on("reInit",S),a.on("scroll",S))}),[a,S]),n.useEffect((()=>{a&&n.startTransition((()=>{w(a.internalEngine().options??{}),a.reInit()}))}),[a]),n.useEffect((()=>{if("y"===v?.axis&&!l)throw Error('Vertical carousel needs "slideHeight" prop')}),[v]),n.createElement("div",{id:e,className:`embla${"y"===v.axis?" vertical":""}${g?` ${g}`:""}`},n.createElement("div",{className:"embla__viewport",ref:t},n.createElement("div",{className:"embla__container"},s.map(((t,a)=>n.createElement("div",{className:"embla__slide",key:`${e}-slide-${a}`},t))))),!!c&&n.createElement(n.Fragment,null,n.createElement(de,{onClick:k,disabled:x,icon:p}),n.createElement(me,{onClick:$,disabled:C,icon:h})),!!u&&n.createElement("div",{className:"embla__dots"},y.map(((e,t)=>n.createElement(pe,{key:t,onClick:()=>E(t),className:"embla__dot".concat(t===b?" embla__dot--selected":"")})))),!!d&&n.createElement("div",{className:"embla__progress"},n.createElement("div",{className:"embla__progress__bar",style:{transform:`translate3d(${_}%,0px,0px)`}})),!!m&&n.createElement("div",{className:"embla__scroll"},n.createElement("div",{className:"embla__scroll__bar"})),n.createElement("style",null,!!Object.keys(v).length&&`\n #${e} > .embla__viewport > .embla__container{\n margin-${"y"===v.axis?"top":"left"}: calc(${i??0}px * -1);\n ${l?`height: calc(${i||0}px + ${l}px);`:""}\n }\n #${e} > .embla__scroll > .embla__scroll__bar{\n width: ${s.length<=r?"100%":"50%"};\n transform: translate3d(${_}%,0px,0px);\n }\n #${e} > .embla__viewport > .embla__container > .embla__slide{\n flex: 0 0 ${(100/r).toFixed(2)}%;\n padding-${"y"===v.axis?"top":"left"}: ${i||0}px;\n }\n ${o?Object.entries(o).map((([t,a])=>{let n=a.gap?a.gap:i??null,r=a.slides;return`@media ${he[t]} {\n #${e} > .embla__viewport > .embla__container{\n ${null!==n?`margin-${"y"===v.axis?"top":"left"}: calc(${n}px * -1);`:""}\n ${null!==n&&a?.height?`height: calc(${n}px + ${a.height}px);`:""}\n } \n #${e} > .embla__scroll > .embla__scroll__bar{\n width: ${s.length<=r?"100%":"50%"};\n }\n #${e} > .embla__viewport > .embla__container > .embla__slide {\n flex: 0 0 ${(100/r).toFixed(2)}%;\n ${null!==n?`padding-${"y"===v.axis?"top":"left"}: ${n}px;`:""}\n }\n }`})).join("\n"):""}\n `))};var _e=({children:e,to:t,activeClassName:a,partiallyActive:r,internal:o=!0,...s})=>o?n.createElement(u.Link,Z({to:t,activeClassName:a,partiallyActive:r},s),e):n.createElement("a",Z({href:t},s),e);var fe=({modalId:e,show:t,className:a,setShowModal:r,children:o,closeWidth:s,closeHeight:i,closeIcon:l={icon:"times",group:"FAS"}})=>(n.useEffect((()=>{document.body.classList[t?"add":"remove"]("no-scroll")}),[t]),n.createElement("div",{className:"modal-layout"+(t?" opened":""),onClick:t=>{t.target===t.currentTarget&&r(e,!1)}},n.createElement("div",{className:"modal"+(a?` ${a}`:"")},n.createElement("div",{className:"modal-body"},o),n.createElement("button",{className:"close",onClick:()=>r(e,!1)},n.createElement(P,{icon:l,width:s,height:i})))));function be({color:e,size:t,className:a}){return n.createElement("div",{className:"spinner-box"+(a?` ${a}`:"")},n.createElement("div",{className:"spinner",style:{border:`5px solid ${e||"white"}`,width:t||45,height:t||45}}))}const ye={link:X,title:ce,text:ie,input:ae,textarea:le,checkbox:q,country:function({className:e,label:t,description:a,input_name:r,onClick:o,onChange:s,value:i,placeholder:l,...c}){const u=n.useMemo((()=>A.reduce(((e,t)=>(e[t[0]]=t[2],e)),{})),[]),[d,m]=n.useState(!1),[p,h]=n.useState(0),[_,f]=n.useState(""),b=n.useRef(null),y=n.useRef(null),E=n.useCallback((e=>{s?.(A[e][0]),n.startTransition((()=>{m(!1),h(e),f(A[e][2])}))}),[s,A]),v=n.useCallback((()=>{if(!y.current)return;const e=y.current.querySelector(`#${c.name??"country"}__${A[p][0]}`);e&&g(y.current,e)}),[p,A]);return n.useEffect((()=>{const e=e=>{b.current&&!b.current.contains(e.target)&&y.current&&!y.current.contains(e.target)&&n.startTransition((()=>m(!1)))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[b,y]),n.useEffect((()=>{v()}),[p]),n.useEffect((()=>{document.body.classList[d?"add":"remove"]("no-scroll"),b.current&&d&&b.current.focus()}),[d]),n.createElement("label",{className:`country ${e?` ${e}`:""}${!i&&l?" placeholder":""}`},!!t&&n.createElement("span",null,t),n.createElement("div",{className:"selected-country",onClick:()=>n.startTransition((()=>m(!0)))},i?u[i]:l??"",n.createElement(P,{className:d?"opened":"",icon:{icon:"chevron-right",group:"FAS"}})),n.createElement("div",{className:"countries"+(d?" show":"")},n.createElement("input",{ref:b,name:r,value:_,onKeyDown:e=>{const{key:t,target:a}=e;"ArrowDown"===t||"ArrowUp"===t?n.startTransition((()=>{const e="ArrowDown"===t?Math.min(p+1,A.length-1):Math.max(p-1,0);h(e),f(A[e][2])})):"Escape"===t?n.startTransition((()=>m(!1))):"Enter"===t?(e.preventDefault(),e.stopPropagation(),E(p)):1!==t.length&&"Backspace"!==t||(e.preventDefault(),e.stopPropagation(),n.startTransition((()=>function(e){n.startTransition((()=>{f(e)}));let t=A.findIndex((e=>e[2].toLowerCase().startsWith(_.toLowerCase())));t>=0&&n.startTransition((()=>h(t)))}("Backspace"===t?_.slice(0,-1):`${_}${t}`))))},onChange:()=>null}),n.createElement("ul",{ref:y,role:"listbox",tabIndex:-1,"aria-activedescendant":`${c.name??"country"}__${A[p][0]}`},A.map((([e,t,a],r)=>n.createElement("li",{className:r===p?"selected":"",role:"option",onClick:()=>E(r),"aria-selected":r===p,"aria-label":a,id:`${c.name??"country"}__${e}`,key:`${c.name??"country"}__${e}`},a))))),!!a&&n.createElement("div",null,n.createElement(z,null,a)))},"country-prefix":W,select:oe,button:ue,"google-places":Y,image:te,hidden:ae},Ee=e=>{if(ye.hasOwnProperty(e.type)){const t=ye[e.type];return n.createElement(t,e)}return console.error(`Element "${e.type}" not supported by <Form />!`),n.createElement(n.Fragment,null)};var ve=(e,t={})=>{const{threshold:a=.5,autoDisconnect:r=!0,onIntersect:o}=t,[s,i]=n.useState(!1),l=n.useRef(null),c=n.useRef(o);n.useEffect((()=>{c.current=o}));const u=n.useCallback((()=>{l.current&&(l.current.disconnect(),l.current=null)}),[]);return n.useEffect((()=>{if(e.current)return l.current=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(i(!0),c.current?.(u),r&&u())}))}),{threshold:a}),l.current.observe(e.current),()=>{l.current&&(l.current.disconnect(),l.current=null)}}),[e,a,r]),[s,u]};exports.BookingUrl=(t,a,n,r,o=null,s=null,i="en")=>{const l={hotel_code:t,check_in:e.format(n.check_in,a.date_format.replace(/m/g,"M")),check_out:e.format(n.check_out,a.date_format.replace(/m/g,"M")),adult_count:n.adult_count,child_count:n.child_count,total_rooms:n.rooms??1,rate_code:!n.promo_codes.length&&o?o:"",promo_code:n.promo_codes.length?n.promo_codes[0]:"",locale:a.locale||i};let c=(u=a.variables,d=l,u.replace(/\$\{(.*?)\}/g,((e,t)=>void 0!==d[t]?d[t]:"")));var u,d;r&&s&&(c+="&room="+s);return`${"undefined"!=typeof window&&m(window.innerWidth)?r?a.mobile_url:a.mobile_url_no_availability:r?a.url:a.url_no_availability}&${c}`.replace(/&&+/g,"&").replace(/&\s*$/,"")},exports.Button=ue,exports.Carousel=ge,exports.Checkbox=q,exports.CountryPrefix=W,exports.Form=function({className:e,form:a,setForm:r,errors:o,setErrors:s,beforeSubmit:i,formatParams:l,validate:c,validateResponse:u,onSuccess:d,onFocus:m,onBlur:p,onClick:h,onChange:g,onError:_,afterSubmit:f,loading:b}){const[y,E]=n.useState(!1),w=(e,t=!0)=>n.createElement("div",null,n.createElement("ul",{className:"error"},Object.entries(e).map((([e,a],r)=>n.createElement("li",{key:`error-form${r}`},n.createElement("span",null,t?n.createElement("strong",null,e,":"):""," ",a))))));n.useEffect((()=>{const e=()=>{window.grecaptcha?.execute?E(!0):setTimeout(e,500)};e()}),[]);const x=n.useCallback((async()=>process.env.RECAPTCHA_V3_SITE_KEY?window.grecaptcha?.execute?await window.grecaptcha.execute(process.env.RECAPTCHA_V3_SITE_KEY,{action:a.settings.recaptcha_action??"submit"}):(console.warn("reCAPTCHA not yet loaded."),null):(console.error("RECAPTCHA_V3_SITE_KEY is not defined!"),null)),[y]),$=e=>{if("string"==typeof e){const i=a.fields[e];return n.createElement("div",{className:`${i.type} ${i.type}-${i.name}${i.data?.class?` ${i.type}-${i.data.class}`:""}`,key:`ff-${a.settings.pk}-${e}`},k.has(i.type)?n.createElement(Ee,Z({className:t({[i.data.class]:Boolean(i.data.class),error:Boolean(o[e])}),onFocus:e=>{m&&m(e)},onBlur:e=>{p&&p(e)},onClick:t=>{if(["checkbox","radio"].includes(i.input_type)){let t={...a};"checkbox"===i.input_type?t.fields={...a.fields,[e]:{...i,value:!i.value}}:t.fields=Object.entries(a.fields).reduce(((e,[t,a])=>(e[t]=a,a.input_name===i.input_name&&(e[t].checked=i.value===e[t].value),e)),{}),n.startTransition((()=>{r(t),o[e]&&s({})}))}h&&h(t)},checked:"radio"===i.input_type?!!i.checked:void 0,onChange:t=>{["checkbox","radio"].includes(i.input_type)||n.startTransition((()=>{r({...a,fields:{...a.fields,[e]:{...i,value:S(i.type,t),data:t.target?.data?{...i.data,...t.target.data}:i.data}}}),o[e]&&s({})})),g&&g(t)}},i,{value:i.value?i.value:""})):n.createElement(Ee,i))}return n.createElement("div",{className:`form-section ${e.name}`,key:`ff-${a.settings.pk}-${e.name}`},e.children.map($))};return n.createElement("form",{className:e,action:a.settings.form_submit,method:a.settings.form_method,onSubmit:e=>(async e=>{if(e.preventDefault(),!e.currentTarget.reportValidity())return;let t={},o=[],m=Object.values(a.fields).reduce(((e,a)=>{if(k.has(a.type)){if(a.required&&!a.value){const n=a.label||a.placeholder||a.input_name||"Unknown";return t[a.input_name]=`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is required`,e}if("password"===a.input_type&&o.push(a.input_name),"radio"===a.input_type&&!a.checked)return e;if("submit"===a.input_type)return e;e[a.input_name]=C(a.type,a.value)}return e}),{});if(a.settings.recaptcha_v3&&(o.push("recaptcha_token"),m.recaptcha_token=await x(),m.recaptcha_token||(t.recaptcha="reCAPTCHA failed!")),a.fields.recaptcha&&!m.recaptcha&&(t.recaptcha="Recaptcha is mandatory"),c&&(t={...t,...c(a.fields,m)}),Object.keys(t).length)return void n.startTransition((()=>{s(t),R(w(t,!1))}));if(i&&i(a),l&&(m=l(m)),a.settings.gtm_event){const e=Object.fromEntries(Object.entries(m).filter((([e])=>!o.includes(e))));U(a.settings.gtm_event,{fields:e})}if(!a.settings.form_ajax_request)return e.target.submit();let p={};a.settings.form_submit.startsWith(`${process.env.API_PROTOCOL}://${process.env.API_HOST}/v1/project/request/contact`)&&void 0!==window&&(m.url=window.location.href),a.settings.form_recipient&&(p["recipient-id"]=`${a.settings.form_recipient}`);const h=await v(a.settings.form_submit,m,a.settings.form_method,p);n.startTransition((()=>{if(200!==h.status||u&&!u(h))if(_)_(h);else if(h.errors){let e=Object.entries(h.errors).reduce(((e,[t,a])=>(e[t]=a.join(", "),e)),{});R(w(e)),s(e)}else h.error&&R(w({failed:h.error?n.createElement(z,null,h.error):"Oops. Something went wrong. Please try again later, or contact us at members@tfehotels.com"},!1));else d?d(h,a.settings.form_success_msg):R(a.settings.form_success_msg?n.createElement(z,null,a.settings.form_success_msg):"Success! Your form has been successfully sent. Thank you for reaching out, we will get back to you as soon as possible.","success"),a.settings.form_redirection&&setTimeout((()=>{window.location.href=a.settings.form_redirection}),3e3),r({...a,fields:Object.entries(a.fields).reduce(((e,[t,a])=>(e[t]=!["button","hidden"].includes(a.type)&&k.has(a.type)?{...a,value:""}:a,e)),{})})})),f&&f(h)})(e),noValidate:!0},b?n.createElement(be,{color:"#00b5ee"}):a.items.map($))},exports.GatsbyLink=_e,exports.GooglePlaces=Y,exports.Icon=P,exports.Image=te,exports.Input=ae,exports.Languages={en:"English",de:"Deutsch",fr:"Français",da:"Dansk"},exports.Link=X,exports.LinkList=ne,exports.Markdown=z,exports.Modal=fe,exports.SVG=se,exports.SearchAvailability=async(t,a,n,r,o,s,i,l=null)=>{if(!i)throw new Error('"hotel_codes" must be defined within the page attributes!');return fetch(`${process.env.SABRE_PROTOCOL}://${process.env.SABRE_HOST}/availability`,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({check_in:e.format(t,"yyyy-MM-dd"),check_out:e.format(a,"yyyy-MM-dd"),hotel_codes:i,adult_count:n,child_count:r,area_codes:[],promo_codes:o,rate_codes:s,price_range:{min:0,max:0},is_mobile:"undefined"!=typeof window&&m(window.innerWidth),language:"en",priority_rates:l})}).then((e=>e.json())).then((e=>(e=>e.success&&Array.isArray(e.data)?(e.data.forEach((e=>{e.room_rates={},e.rates.forEach((t=>t.forEach((t=>{e.room_rates.hasOwnProperty(t.room_type_code)||(e.room_rates[t.room_type_code]=[]),e.room_rates[t.room_type_code].push(t)}))))})),e.data):{})(e)),(e=>{console.log(e)}))},exports.Select=oe,exports.Spinner=be,exports.Text=ie,exports.Textarea=le,exports.Title=ce,exports.Toast=B,exports.addGTMEvent=U,exports.addHostPrefix=e=>`${"staging"===process.env.ENV?"staging.":"testing"===process.env.ENV?"test.":""}${e}`,exports.animateJSX=(e,t="presence")=>`jsx__${t} jsx__${t}__${["from","leave"].includes(e.stage)?"loading":"loaded"}`,exports.apiLink=(e="",t=null)=>`${V(`${process.env.API_PROTOCOL}://${process.env.API_HOST}`,e)}${t?`?${new URLSearchParams(t).toString()}`:""}`,exports.cacheSearchParams=e=>{const{hotel_codes:t,rate_codes:a,promo_codes:n,search_id:r,search_term:o,search_index:s,...i}=e;return localStorage.setItem("search-params",JSON.stringify(i))},exports.cachedSearchParams=G,exports.classNames=f,exports.clearCache=y,exports.clearWorkersCache=b,exports.countryPrefixes=A,exports.dealLink=e=>{if(!process.env.DEALS_ROOT_SLUG)throw new Error("The env variable DEALS_ROOT_SLUG is not defined!");return V(process.env.DEALS_ROOT_SLUG,e)},exports.decodeQuotePlus=e=>decodeURIComponent(e.replace(/\+/g,"%20")),exports.defaultSearchParams=(t,a)=>{const n=G()||{},r={check_in:e.addDays(new Date,15),check_out:e.addDays(new Date,17),adult_count:2,child_count:0,rooms:1,promo_codes:[],rate_codes:[],search_term:"",search_id:null,search_index:null};return Object.keys(r).reduce(((e,o)=>(e[o]=[a[o],t[o],n[o],r[o]].find((e=>void 0!==e)),e)),{})},exports.deleteUserSession=()=>{localStorage.removeItem("user")},exports.deleteUserSettings=()=>localStorage.removeItem("userSettings"),exports.deviceId=e=>e>1023?"d":e>768?"t":"m",exports.europeanCountryCodesSet=T,exports.fetchDeal=async({deal_id:e=null,rate_code:t=null,promo_code:a=null,project_id:n=null,property_id:r=null,fields:o=null},s="en")=>{const i=`${process.env.API_PROTOCOL}://${process.env.API_HOST}/v1/project/request/hotel-deal?language=${s}`;try{const s=await fetch(i,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({deal_id:e,rate_code:t,promo_code:a,project_id:n,property_id:r,fields:o})});if(!s.ok)throw new Error(`Hotel deal (${i}) HTTP error: ${s.status}`);let l=await s.json();return l.rateCode=t,l.promoCode=a,l}catch(e){console.error(`Failed to fetch Hotel deal (${i})`,e)}},exports.formatOutput=D,exports.geoLocation=async()=>{try{const e=await fetch("https://geo.tfehotels.com/");if(!e.ok)throw new Error(`Geolocation (https://geo.tfehotels.com/) HTTP error: ${e.status}`);return await e.json()}catch(e){console.error("Failed to fetch Geolocation (https://geo.tfehotels.com/)",e)}return null},exports.getInputEventValue=S,exports.getInputHumanValue=C,exports.getThumb=e=>e.image||e.mobile_image?"undefined"!=typeof window&&m(window.innerWidth)?e.mobile_image?N(e.mobile_image):N(e.image):e.image?N(e.image):N(e.mobile_image):"",exports.getViewPort=()=>{if("undefined"==typeof window)throw new Error("getViewPort() requires browser window!");return m(window.innerWidth)?"m":p(window.innerWidth)?"t":"d"},exports.hashEmail=async function(e){const t=new TextEncoder,a=await crypto.subtle.digest("SHA-256",t.encode(e.trim().toLowerCase()));return Array.from(new Uint8Array(a)).map((e=>e.toString(16).padStart(2,"0"))).join("")},exports.hotelOptionsByCity=(e,t)=>{const a=["Sydney","Melbourne","Brisbane","Perth","Hobart","Canberra","Adelaide","Gold Coast","Darwin","Auckland","Wellington","Queenstown","Singapore"],n={};for(const t in e)if(e.hasOwnProperty(t)){const a=e[t];n[a.city]||(n[a.city]=[]),n[a.city].push({label:a.name,value:t,sort:a.sort,country_id:a.country_id})}let r=Object.keys(n).map((e=>({label:e,options:n[e].sort(((e,t)=>e.sort-t.sort))})));return t?r.sort(((e,n)=>{const r=e.options.length>0?e.options[0].country_id:null,o=n.options.length>0?n.options[0].country_id:null,s=r&&void 0!==t[r]?t[r]:1/0,i=o&&void 0!==t[o]?t[o]:1/0;if(s!==i)return s-i;return(a.includes(e.label)?a.indexOf(e.label):1/0)-(a.includes(n.label)?a.indexOf(n.label):1/0)})):r.sort(((e,t)=>(a.includes(e.label)?a.indexOf(e.label):1/0)-(a.includes(t.label)?a.indexOf(t.label):1/0))),r},exports.human_number=function(e,t=2){return e.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:t})},exports.intersects=function(e,t){e.size>t.size&&([e,t]=[t,e]);for(const a of e)if(t.has(a))return!0;return!1},exports.isDesktop=h,exports.isIOS=()=>/iPad|iPhone|iPod/.test(navigator.userAgent),exports.isMobile=m,exports.isSubset=function(e,t){for(const a of e)if(!t.has(a))return!1;return!0},exports.isTablet=p,exports.joinAddress=$,exports.joinPaths=V,exports.json_request=v,exports.loadUserSession=()=>{const e=localStorage.getItem("user");return e?JSON.parse(e):null},exports.loadUserSettings=(e={},t=!1)=>{const a={currency:"AUD",zone:null,countryCode:null},n=localStorage.getItem("userSettings");let r=n?JSON.parse(n):null;return r?!t||r?.appVersion&&r.appVersion.split(".")[0]===process.env.GATSBY_APP_VERSION?.split(".")[0]||(console.warn(`Version mismatch: userSettings appVersion (${r.appVersion}) vs current app version (${process.env.GATSBY_APP_VERSION}). Clearing cache.`),y(),r={...a,...e,...r,appVersion:process.env.GATSBY_APP_VERSION},E(r)):(r={...a,...e,appVersion:process.env.GATSBY_APP_VERSION},E(r)),r},exports.localizedAddress=function(e,t={}){const{city:a,address1:n,address2:r,postalCode:o}=t;let{stateId:s}=t;s&&/^[a-zA-Z]{2}-/.test(s)&&(s=s.split("-")[1]);const i=[n,r].filter(Boolean).join(" ");let l;const c=e?.toLowerCase();if(["de","dk","at","ch"].includes(c)){l=[i,[o,a].filter(Boolean).join(" ")]}else l="hu"===c?[a,i,o]:[i,a,s,o];return $(l)},exports.minimumSlides=(e,t)=>t.length>=e?t:[].concat(...new Array(Math.ceil(e/t.length)).fill(t)),exports.optimizedThumb=N,exports.parseQueryParams=function(e,t={}){return e?(t={rate_code:"rate_codes",promo_code:"promo_codes",...t},e.slice(1).split("&").reduce(((e,a)=>{let[n,r]=a.split("=");return n=decodeURIComponent(n),r=decodeURIComponent(r||""),t[n]&&(n=t[n]),e[n]=K.hasOwnProperty(n)?K[n](r):r,e}),{})):{}},exports.preloadImages=async e=>{e.forEach((e=>{if(e){(new Image).src=e}}))},exports.pricePerNight=(e,t)=>(parseFloat(e)/t).toFixed(2),exports.roomFeatures=["balcony","sofa_bed","kitchen","kitchenette","laundry_machine"],exports.saveUserSession=e=>{localStorage.setItem("user",JSON.stringify({loyaltyprofileId:e.loyaltyprofileId,profile_id:e.profile_id,title:e.title,first_name:e.first_name,last_name:e.last_name,email:e.email,zip:e.zip,country_code:e.country_code,MobilePhoneCountryCode:e.MobilePhoneCountryCode,mobile:e.mobile,date_of_birth:e.date_of_birth,language:e.language}))},exports.saveUserSettings=E,exports.scrollToChild=g,exports.scrollToElement=async e=>{document.getElementById(e)?.scrollIntoView({behavior:"smooth"})},exports.search=async(e,t,a,n,r,o,s,i=!1,l=[process.env.PROJECT])=>{const c=[],u=[{term:{language:o}},{terms:{project:l}}],d=i?"hotel":a||"neighbourhood,city,country,hotel";n?i&&"hotel"!==a?u.push({term:{[`${a}_id`]:n}}):u.push({term:{id:n}}):c.push({multi_match:{query:t,type:"bool_prefix",fields:["name^10","name.substring^1"],operator:"and"}});const m=await fetch(`${process.env.ELASTICSEARCH_URL}/${d}/_search`,{method:"POST",signal:e?e.signal:void 0,headers:{"Content-Type":"application/json"},body:JSON.stringify({size:s,_source:r,track_total_hits:!1,query:{bool:{must:c,filter:u}},collapse:{field:"id"}})});if(!m.ok)throw new Error(`HTTP ${m.status}`);const p=await m.json();return D(p?.hits?.hits?p.hits.hits:[])},exports.siteUrl=(e="",t="")=>`${process.env.PROTOCOL}://${t||process.env.HOST}${e}`,exports.sortHotels=(e,t,a=!1,n="asc")=>a?e.sort(((e,a)=>{const r=Number(Boolean(t[e.id]?.rate)),o=Number(Boolean(t[a.id]?.rate));if(r!==o)return o-r;if(r&&o){const s=r?parseFloat(t[e.id]?.rate):1/0,i=o?parseFloat(t[a.id]?.rate):1/0;if(s!==i)return"asc"===n?s-i:i-s}return e.recommended_order-a.recommended_order})):e.sort(((e,t)=>e.recommended_order-t.recommended_order)),exports.sortRooms=(e,t,a=!1,n="asc")=>a?e.sort(((e,a)=>{const r=Number(Boolean(t[e.booking_engine_code])),o=Number(Boolean(t[a.booking_engine_code]));if(r!==o)return o-r;if(r&&o){const s=r?parseFloat(t[e.booking_engine_code][0].total):1/0,i=o?parseFloat(t[a.booking_engine_code][0].total):1/0;if(s!==i)return"asc"===n?s-i:i-s}return e.sort-a.sort})):e.sort(((e,t)=>e.sort-t.sort)),exports.sp_to_qs=(t,a,n,r,o,s,i=void 0,l=1,c=null,u=null,d=null)=>`?check_in=${e.format(t,"yyyy-MM-dd")}&check_out=${e.format(a,"yyyy-MM-dd")}&adult_count=${n}&child_count=${r}&promo_code=${s?.length?s[0]:""}&rate_code=${o?.length?o[0]:""}${i?`&hotel_codes=${i}`:""}&rooms=${l}${c?`&search_term=${encodeURIComponent(c)}`:""}${u?`&search_id=${u}`:""}${d?`&search_index=${d}`:""}`,exports.ssoURL=e=>{if(!process.env.SABRE_SSO_HOST)throw new Error("The env variable SABRE_SSO_HOST is not defined!");if("development"!==process.env.ENV){const t=[".co.nz",".com.au",".com",".co",".au",".nz"].find((e=>process.env.SABRE_SSO_HOST.endsWith(e)));if(t&&process.env.HOST&&!process.env.HOST.endsWith(t)){const t=process.env.HOST.replace(/^(test\.|staging\.)/,"");return`${process.env.SABRE_SSO_PROTOCOL}://${process.env.SABRE_SSO_HOST?.split(".")[0]}.${t}${e}`}}return`${process.env.SABRE_SSO_PROTOCOL}://${process.env.SABRE_SSO_HOST}${e}`},exports.tagExists=(e,...t)=>{for(const a of Object.keys(e))if(t.includes(a))return!0;return!1},exports.toImageElement=(e,t={})=>Object.entries(e).reduce(((e,[a,n])=>(e[t[a]||a]=n,e)),{type:"image",title:"",loading:"eager",image:void 0,mobile_image:void 0,mobile_file:void 0}),exports.toPhrase=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/[_-]/g," ").toLowerCase(),exports.toastMsg=R,exports.tripadvisorRatingURL=e=>`https://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/${(Math.floor(2*parseFloat(e))/2).toFixed(1)}-41022-5.svg`,exports.useIntersectionObserver=ve,exports.useViewport=function(){const[e,t]=n.useState("d");return n.useEffect((()=>{const a=()=>{const a=window.innerWidth;if("m"===e){if(m(a))return}else if(e.startsWith("t")){if(p(a))return}else if("d"===e&&h(a))return;n.startTransition((()=>t(m(a)?"m":p(a)?a<=950?"tp":"tl":"d")))};return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a)}}),[e]),e},exports.zoneFromCountryCode=e=>{switch(e){case"GB":case"UK":return"UK";case"AU":return"AU";case"NZ":return"NZ";case"SG":return"AS";default:return e&&T.has(e)?"EU":"AU"}},exports.zoneOrder={EU:["EU","UK","AU","NZ","AS"],UK:["UK","EU","AU","NZ","AS"],AU:["AU","NZ","EU","UK","AS"],NZ:["NZ","AU","EU","UK","AS"],AS:["AS","AU","NZ","EU","UK"]};
2
2
  //# sourceMappingURL=index.browser.cjs.map