1import{G as e,K as t,L as n,M as r,R as i,Tt as a,V as o,W as s,X as c,Yt as l,b as u,ct as d,dt as f,ht as p,mt as m,n as h,ot as g,tt as ee,vt as _,y as v,yt as y}from"./B8HE6cHd.js";import{Ot as b,dt as x,ft as S,gt as C,it as w,kt as T,ot as E,st as D,t as O}from"./Yody7baH.js";import{t as k}from"#entry";function A(e){performance?.mark?.(`mark_feature_usage`,{detail:{feature:e}})}async function j(e,t){return await M(t).catch(e=>(console.error(`Failed to get image meta for `+t,e+``),{width:0,height:0,ratio:0}))}async function M(e){if(typeof Image>`u`)throw TypeError(`Image not supported`);return new Promise((t,n)=>{let r=new Image;r.onload=()=>{t({width:r.width,height:r.height,ratio:r.width/r.height})},r.onerror=e=>n(e),r.src=e})}function N(e){return(t=>t===void 0?e.missingValue:e[t]||t)}function P(e={}){let t=e.formatter,n=e.keyMap&&typeof e.keyMap!=`function`?N(e.keyMap):e.keyMap,r={};for(let t in e.valueMap){let n=t,i=e.valueMap[n];r[n]=typeof i==`object`?N(i):i}return i=>{let a=[];for(let e in i){let t=e;if(i[t]===void 0)continue;let o=typeof r[t]==`function`?r[t](i[t]):i[t];a.push([n?n(t):t,o])}return t?a.map(e=>t(...e)).join(e.joinWith??`&`):new URLSearchParams(a).toString()}}function F(e=``){if(e===void 0||!e.length)return[];let t=new Set;for(let n of e.split(` `)){let e=Number.parseInt(n.replace(`x`,``));e&&t.add(e)}return Array.from(t)}function I(e){if(e.length===0)throw Error("`densities` must not be empty, configure to `1` to render regular size only (DPR 1.0)")}function L(e=``){if(typeof e==`number`)return e;if(typeof e==`string`&&e.replace(`px`,``).match(/^\d+$/g))return Number.parseInt(e,10)}function R(e){let t={};if(typeof e==`string`)for(let n of e.split(/[\s,]+/).filter(e=>e)){let e=n.split(`:`);e.length===2?t[e[0].trim()]=e[1].trim():t[`1px`]=e[0].trim()}else Object.assign(t,e);return t}function z(e){let t={options:e},n=(e,n={})=>V(t,e,n),r=((e,t,r)=>n(e,E({modifiers:t},r)).url);for(let t in e.presets)r[t]=((n,i,a)=>r(n,i,{...e.presets[t],...a}));return r.options=e,r.getImage=n,r.getMeta=((e,n)=>B(t,e,n)),r.getSizes=((e,n)=>W(t,e,n)),t.$img=r,r}async function B(e,t,n){let r=V(e,t,{...n});return typeof r.getMeta==`function`?await r.getMeta():await j(e,r.url)}function V(e,t,n){if(t&&typeof t!=`string`)throw TypeError(`input must be a string (received ${typeof t}: ${JSON.stringify(t)})`);if(!t||t.startsWith(`data:`))return{url:t};let{setup:r,defaults:i}=H(e,n.provider||e.options.provider),a=r(),o=U(e,n.preset);if(t=D(t)?t:C(t),!a.supportsAlias){for(let n in e.options.alias)if(t.startsWith(n)){let r=e.options.alias[n];r&&(t=x(r,t.slice(n.length)))}}if(a.validateDomains&&D(t)){let n=S(t).host;if(!e.options.domains.find(e=>e===n))return{url:t}}let s=E(n,o,i),c={...s,modifiers:{...s.modifiers,width:s.modifiers?.width?L(s.modifiers.width):void 0,height:s.modifiers?.height?L(s.modifiers.height):void 0}},l=a.getImage(t,c,e);return l.format||=c.modifiers.format||``,l}function H(e,t){let n=e.options.providers[t];if(!n)throw Error(`Unknown provider: `+t);return n}function U(e,t){if(!t)return{};if(!e.options.presets[t])throw Error(`Unknown preset: `+t);return e.options.presets[t]}function W(e,t,n){let r=U(e,n.preset),i=E(n,r),a=L(i.modifiers?.width),o=L(i.modifiers?.height),s=i.sizes?R(i.sizes):{},c=i.densities?.trim(),l=c?F(c):e.options.densities;I(l);let u=a&&o?o/a:0,d=[],f=[];if(Object.keys(s).length>=1){for(let r in s){let i=G(r,String(s[r]),o,u,e);if(i!==void 0){d.push({size:i.size,screenMaxWidth:i.screenMaxWidth,media:`(max-width: ${i.screenMaxWidth-1}px)`});for(let r of l)f.push({width:i._cWidth*r,src:K(e,t,n,i,r)})}}q(d)}else for(let r of l){let i=Object.keys(s)[0],a=i?G(i,String(s[i]),o,u,e):void 0;a===void 0&&(a={size:``,screenMaxWidth:0,_cWidth:n.modifiers?.width,_cHeight:n.modifiers?.height}),f.push({width:r,src:K(e,t,n,a,r)})}J(f);let p=f[f.length-1],m=d.length?d.map(e=>`${e.media?e.media+` `:``}${e.size}`).join(`, `):void 0,h=m?`w`:`x`;return{sizes:m,srcset:f.map(e=>`${e.src}
1 ${e.width}${h}`).join(`, `),src:p?.src}}function G(e,t,n,r,i){let a=i.options.screens&&i.options.screens[e]||Number.parseInt(e),o=t.endsWith(`vw`);if(!o&&/^\d+$/.test(t)&&(t+=`px`),!o&&!t.endsWith(`px`))return;let s=Number.parseInt(t);if(!a||!s)return;o&&(s=Math.round(s/100*a));let c=r?Math.round(s*r):n;return{size:t,screenMaxWidth:a,_cWidth:s,_cHeight:c}}function K(e,t,n,r,i){return e.$img(t,{...n.modifiers,width:r._cWidth?r._cWidth*i:void 0,height:r._cHeight?r._cHeight*i:void 0},n)}function q(e){e.sort((e,t)=>e.screenMaxWidth-t.screenMaxWidth);let t=null;for(let n=e.length-1;n>=0;n--){let r=e[n];r.media===t&&e.splice(n,1),t=r.media}for(let t=0;t<e.length;t++)e[t].media=e[t+1]?.media||``}function J(e){e.sort((e,t)=>e.width-t.width);let t=null;for(let n=e.length-1;n>=0;n--){let r=e[n];r.width===t&&e.splice(n,1),t=r.width}}function Y(e){let t;return()=>t||(t=typeof e==`function`?e():e,t)}var X=P({keyMap:{width:`w`,height:`h`,format:`fm`,quality:`q`,position:`position`,fit:`fit`},valueMap:{fit:{fill:`fill`,cover:`cover`,contain:`contain`}
1,format:{avif:`avif`,gif:`gif`,jpg:`jpg`,jpeg:`jpg`,png:`png`,webp:`webp`},position:{top:`top`,right:`right`,bottom:`bottom`,left:`left`,center:`center`}}}),Z={screens:{sm:640,md:768,lg:1024,xl:1280,"2xl":1536},presets:{},domains:[],alias:{},densities:[1,2],format:[`webp`],quality:void 0,provider:`netlify`,providers:{netlify:{setup:Y({getImage:(e,{modifiers:t,baseURL:n})=>{let r=X({...t,url:e});return{url:`${n||`/.netlify/images`}?${r}`}}}),defaults:{}}}},Q=e=>{let t=u(),n=v();return n.$img||n._img||(n._img=z({...Z,event:e||n.ssrContext?.event,nuxt:{baseURL:t.app.baseURL},runtimeConfig:t}))},te=e=>{let t=Q();return{providerOptions:n(()=>({provider:e.provider,preset:e.preset})),normalizedAttrs:n(()=>({width:L(e.width),height:L(e.height),crossorigin:e.crossorigin===!0?`anonymous`:e.crossorigin||void 0,nonce:e.nonce})),imageModifiers:n(()=>({...e.modifiers,width:e.width,height:e.height,format:e.format,quality:e.quality||t.options.quality,background:e.background,fit:e.fit}))}},ne=[`type`,`sizes`,`srcset`],re=[`src`,`sizes`,`srcset`],ie=Object.assign({inheritAttrs:!1},{__name:`NuxtPicture`,props:{legacyFormat:{type:String,required:!1},imgAttrs:{type:Object,required:!1},src:{type:String,required:!1},format:{type:String,required:!1},quality:{type:[String,Number],required:!1},background:{type:String,required:!1},fit:{type:String,required:!1},modifiers:{type:Object,required:!1},preset:{type:String,required:!1},provider:{type:null,required:!1},sizes:{type:[String,Object],required:!1},densities:{type:String,required:!1},preload:{type:[Boolean,Object],required:!1},width:{type:[String,Number],required:!1},height:{type:[String,Number],required:!1},crossorigin:{type:[String,Boolean],required:!1},nonce:{type:String,required:!1}},emits:[`load`,`error`],setup(e,{emit:t}){let i=e,a=t,s=m(),u=new Set([`alt`,`referrerpolicy`,`usemap`,`longdesc`,`ismap`,`loading`,`crossorigin`,`decoding`,`nonce`]),h=n(()=>{let e={img:{...C.value,...i.imgAttrs,"data-nuxt-pic":``},picture:{}};for(let t in s)u.has(t)?t in e.img||(e.img[t]=s[t]):e.picture[t]=s[t];return e}),_=n(()=>i.src?.match(/^[^?#]+\.(\w+)(?:$|[?#])/)?.[1]),y=n(()=>i.legacyFormat?i.legacyFormat:!_.value||![`png`,`webp`,`gif`,`svg`].includes(_.value)?`jpeg`:`png`),b=Q(),{providerOptions:x,imageModifiers:S,normalizedAttrs:C}=te(i),w=n(()=>{let e=i.format?.split(`,`)||(_.value===`svg`?[`svg`]:b.options.format?.length?[...b.options.format]:[`webp`]);return e[0]===`svg`?[{src:i.src}]:(e.includes(y.value)&&e.splice(e.indexOf(y.value),1),e.push(y.value),e.map(e=>{let{srcset:t,sizes:n,src:r}=b.getSizes(i.src,{...x.value,sizes:i.sizes||b.options.screens,densities:i.densities,modifiers:{...S.value,format:e}});return{src:r,type:`image/${e}`,sizes:n,srcset:t}}))}),T=v().isHydrating,E=p(`imgEl`);return g(()=>{let e=Array.isArray(E.value)?E.value[0]:E.value;e&&(e.complete&&T&&(e.getAttribute(`data-error`)?a(`error`,new Event(`error`)):a(`load`,new Event(`load`))),e.onload=e=>{a(`load`,e)},e.onerror=e=>{a(`error`,e)},A(`nuxt-picture`))}),(e,t)=>(d(),o(`picture`,l(c(h.value.picture)),[(d(!0),o(r,null,f(w.value,(e,t)=>(d(),o(r,null,[t+1<w.value.length?(d(),o(`source`,{key:e.src,type:e.type,sizes:e.sizes,srcset:e.srcset},null,8,ne)):(d(),o(`img`,ee({ref_for:!0,ref_key:`imgEl`,ref:E,key:`last`+e.src},{ref_for:!0},h.value.img,{src:e.src,sizes:e.sizes,srcset:e.srcset}),null,16,re))],64))),256))],16))}}),$={class:`flex justify-center relative py-12`},ae={class:`py-12 flex justify-center`},oe={for:`sign-up`,class:`col-span-2 flex items-center justify-start gap-x-2`},se={class:`col-span-2 text-sm`},ce={__name:`index`,setup(n){let c=a(null),l=a(null),u=a(!1),f=async()=>{let e=new FormData(l.value),t=e.get(`email`),n=e.get(`name`),r=e.get(`message`);try{if(!(await fetch(`/.netlify/functions/verify_message`,{method:`POST`,body:JSON.stringify({message:r})})).ok)throw Error(`Your message looks like spam. Please try again.`);let{gtag:i}=k();i(`event`,`generate_lead`,{form_location:w().path}),await fetch(`/.netlify/functions/hubspot_post_contact`,{method:`POST`,body:JSON.stringify({email:t,name:n})}),await fetch(`/.netlify/functions/send_email-general_enquiry`,{method:`POST`,body:JSON.stringify({email:t,name:n,message:r})}),u.value&&await fetch(`/.netlify/functions/mailerlite_subscribe`,{method:`POST`,body:JSON.stringify({email:e.get(`email`)})}),l.value.reset(),c.value=`Thank you for getting in touch. I will contact you soon.`}catch(e){c.value=e.message}finally{setTimeout(()=>{c.value=null},5e3)}};return h({title:`Website Designer and Developer | Jack Christian`,meta:[{name:`description`,content:`Freelance website designer and developer working with small businesses to create websites with impact and tangible results.`},{name:`robots`,content:`index, follow`},{name:`author`,content:`Jack Christian`},{property:`og:description`,content:`Freelance website designer and developer working with small businesses to create websites with impact and tangible results.`},{property:`og:title`,content:`Website Designer and Developer | Jack Christian`},{property:`og:locale`,content:`en-GB`},{property:`og:image`,content:`https://jackchristian.co.uk/images/jack-christian-website-designer.jpg`},{property:`og:site_name`,content:`https://jackchristian.co.uk/`},{property:`og:url`,content:`https://jackchristian.co.uk/`}]}),(n,a)=>{let c=ie,p=O;return d(),o(r,null,[i(`main`,$,[a[1]||=i(`section`,{class:`absolute bottom-[
112.5dvh] text-center bg-white max-w-3xl p-6`},[i(`h1`,{class:`text-5xl font-bold mb-4`},`Thanks for visiting my site!`),i(`hr`,{class:`border-orange-600 mb-4 w-12 mx-auto border-[1px]`}),i(`h2`,{class:`text-sm`},`I have recently relocated from Australia back to the UK and so I just need to rejig a few things on the site. The site should be up and running soon but if you would like to get in touch, please use the form below and I will get back to you.`)],-1),t(c,{class:`shadow-2xl [&>*]:max-h-[90dvh] [&>*]:aspect-[2764/3663] [&>*]:w-auto [&>*]:h-auto`,src:`/images/jack-christian-website-designer.jpg`,format:`jpeg`,"img-attrs":{alt:`Jack Christian sat at a wooden desk with his laptop open smiling to someone off camera`,width:2764,height:3663,loading:`eager`}})]),i(`footer`,ae,[i(`form`,{ref_key:`contactFormRef`,ref:l,class:`md:grid grid-cols-2 gap-y-6 gap-x-12 max-w-3xl w-full`,onSubmit:T(f,[`prevent`])},[a[6]||=s(`<label for="name"><span class="sr-only">Name</span><input type="text" name="name" id="name" class="text-sm focus:outline-orange-600 px-2 py-1 w-full border-b-[1px] border-current" placeholder="Your name *..." required></label><label for="email"><span class="sr-only">Email</span><input type="email" name="email" id="email" class="text-sm focus:outline-orange-600 px-2 py-1 w-full border-b-[1px] border-current" placeholder="Your email *..." required></label><label for="message" class="col-span-2"><span class="sr-only">Message</span><textarea name="message" id="message" class="text-sm focus:outline-orange-600 p-2 w-full resize-none border-[1px] border-current h-24" placeholder="Your message *..." required></textarea></label>`,3),i(`label`,oe,[y(i(`input`,{type:`checkbox`,name:`sign-up`,id:`sign-up`,"onUpdate:modelValue":a[0]||=e=>u.value=e},null,512),[[b,u.value]]),a[2]||=i(`span`,{class:`text-sm`},`Would you like to receive occasional updates from me about my work and services?`,-1)]),i(`p`,se,[a[4]||=e(`By sending this form you agree to the terms set out in my `,-1),t(p,{class:`hover:text-orange-600 underline`,to:`/privacy-policy`},{default:_(()=>[...a[3]||=[e(`Privacy Policy`,-1)]]),_:1}),a[5]||=e(`.`,-1)]),a[7]||=i(`div`,null,[i(`button`,{type:`submit`,class:`font-bold text-sm uppercase bg-orange-600 hover:bg-gray-800 text-white w-auto inline-block py-2 px-6`},`Send`)],-1)],544)])],64)}}};export{ce as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.