@weatherboard/cms 0.6.0 → 0.8.0

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.
Files changed (39) hide show
  1. package/README.md +68 -0
  2. package/dist/index.cjs +2 -2
  3. package/dist/index.cjs.map +4 -4
  4. package/dist/index.mjs +2 -2
  5. package/dist/index.mjs.map +4 -4
  6. package/dist/next.cjs +4 -2
  7. package/dist/next.cjs.map +4 -4
  8. package/dist/next.d.cts +2 -0
  9. package/dist/next.d.mts +2 -0
  10. package/dist/next.d.ts +2 -0
  11. package/dist/next.mjs +4 -2
  12. package/dist/next.mjs.map +4 -4
  13. package/dist/portable/sections.d.cts +43 -6
  14. package/dist/portable/sections.d.mts +43 -6
  15. package/dist/portable/sections.d.ts +43 -6
  16. package/dist/portable/site-content.d.cts +41 -10
  17. package/dist/portable/site-content.d.mts +41 -10
  18. package/dist/portable/site-content.d.ts +41 -10
  19. package/dist/runtime/site-readers.d.cts +164 -0
  20. package/dist/runtime/site-readers.d.mts +164 -0
  21. package/dist/runtime/site-readers.d.ts +164 -0
  22. package/dist/runtime/test-fixtures/saved-documents.d.cts +81 -0
  23. package/dist/runtime/test-fixtures/saved-documents.d.mts +81 -0
  24. package/dist/runtime/test-fixtures/saved-documents.d.ts +81 -0
  25. package/dist/server.cjs +4 -2
  26. package/dist/server.cjs.map +4 -4
  27. package/dist/server.d.cts +2 -0
  28. package/dist/server.d.mts +2 -0
  29. package/dist/server.d.ts +2 -0
  30. package/dist/server.mjs +4 -2
  31. package/dist/server.mjs.map +4 -4
  32. package/dist/site-content.cjs +7 -4
  33. package/dist/site-content.cjs.map +4 -4
  34. package/dist/site-content.d.cts +2 -2
  35. package/dist/site-content.d.mts +2 -2
  36. package/dist/site-content.d.ts +2 -2
  37. package/dist/site-content.mjs +7 -4
  38. package/dist/site-content.mjs.map +4 -4
  39. package/package.json +4 -2
@@ -1,11 +1,14 @@
1
- "use strict";var yn=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var oe=(n,e)=>{for(var t in e)yn(n,t,{get:e[t],enumerable:!0})},re=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ee(e))!te.call(n,r)&&r!==t&&yn(n,r,{get:()=>e[r],enumerable:!(o=ne(e,r))||o.enumerable});return n};var ie=n=>re(yn({},"__esModule",{value:!0}),n);var Ee={};oe(Ee,{CONTENT_PAGES_QUERY:()=>cn,CONTENT_PAGE_BY_SLUG_QUERY:()=>pn,HEADING_LIST_LAYOUTS:()=>U,HOME_PAGE_DOCUMENT_QUERY:()=>Q,MALFORMED_CONTENT:()=>an,MalformedContentError:()=>h,READER_ACTION_HREF:()=>v,READER_GALLERY_PHOTO_LIMIT:()=>V,READER_GALLERY_PHOTO_MIN:()=>Z,READER_HOME_PAGE_ID:()=>P,READER_JUMP_LINK:()=>Y,READER_PHOTO_SLUG:()=>X,READER_SECTION_KINDS:()=>Ln,READER_SITE_SETTINGS_ID:()=>H,READER_STORY_LAYOUTS:()=>nn,SECTION_LAYOUT_DEFAULTS:()=>L,SECTION_WARNINGS:()=>T,SITE_HERO_LAYOUTS:()=>kn,SITE_HERO_LAYOUT_WARNING:()=>In,SITE_HERO_TAGLINES_DEFAULTED_WARNING:()=>En,SITE_HERO_TAGLINE_DROPPED_WARNING:()=>Tn,SITE_HERO_TAGLINE_MAX_LENGTH:()=>wn,SPLIT_LAYOUTS:()=>$,STAGGER_ROW_LAYOUTS:()=>j,campaignState:()=>_n,contentPageQuery:()=>zn,contentPagesQuery:()=>Jn,createSiteContentReader:()=>Wn,homeContentQuery:()=>Qn,parseContentPage:()=>W,parseHomePage:()=>ln,parseSiteHero:()=>Cn,parseSiteSettings:()=>un,portableTextToMarkdown:()=>qn,siteHeroQuery:()=>Xn,siteSettingsQuery:()=>Kn,validateSiteHeroTaglines:()=>An});module.exports=ie(Ee);function _(n){if(!Array.isArray(n))return!1;for(let e=0;e<n.length;e+=1)if(!Object.hasOwn(n,e))return!1;return!0}var J=["stacked","columns"],K=["none","playful"],rn={layout:"stacked",decoration:"none"},$n=`_type, _id, _rev, _updatedAt, title, locationKeys, note, signOff,
1
+ "use strict";var Sn=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var de=Object.prototype.hasOwnProperty;var pe=(n,e)=>{for(var t in e)Sn(n,t,{get:e[t],enumerable:!0})},fe=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ye(e))!de.call(n,i)&&i!==t&&Sn(n,i,{get:()=>e[i],enumerable:!(o=ue(e,i))||o.enumerable});return n};var ge=n=>fe(Sn({},"__esModule",{value:!0}),n);var je={};pe(je,{CONTENT_PAGES_QUERY:()=>gn,CONTENT_PAGE_BY_SLUG_QUERY:()=>mn,HEADING_LIST_LAYOUTS:()=>R,HOME_PAGE_DOCUMENT_QUERY:()=>fn,MALFORMED_CONTENT:()=>cn,MalformedContentError:()=>I,READER_ACTION_HREF:()=>rn,READER_GALLERY_PHOTO_LIMIT:()=>tn,READER_GALLERY_PHOTO_MIN:()=>en,READER_HOME_PAGE_ID:()=>F,READER_JUMP_LINK:()=>J,READER_PHOTO_SLUG:()=>on,READER_SECTION_KINDS:()=>Fn,READER_SITE_SETTINGS_ID:()=>W,READER_STORY_LAYOUTS:()=>sn,SECTION_LAYOUT_DEFAULTS:()=>O,SECTION_WARNINGS:()=>A,SITE_HERO_LAYOUTS:()=>bn,SITE_HERO_LAYOUT_WARNING:()=>wn,SITE_HERO_TAGLINES_DEFAULTED_WARNING:()=>$n,SITE_HERO_TAGLINE_DROPPED_WARNING:()=>In,SITE_HERO_TAGLINE_MAX_LENGTH:()=>_n,SPLIT_LAYOUTS:()=>L,STAGGER_ROW_LAYOUTS:()=>D,campaignState:()=>Nn,contentPageQuery:()=>se,contentPagesQuery:()=>le,createSiteContentReader:()=>re,homeContentQuery:()=>ie,parseContentPage:()=>V,parseHomePage:()=>dn,parseSiteHero:()=>An,parseSiteSettings:()=>pn,portableTextToMarkdown:()=>Xn,siteHeroQuery:()=>Yn,siteSettingsQuery:()=>ae,validateSiteHeroTaglines:()=>Tn});module.exports=ge(je);function h(n){if(!Array.isArray(n))return!1;for(let e=0;e<n.length;e+=1)if(!Object.hasOwn(n,e))return!1;return!0}var X=["stacked","columns"],v=["none","playful"],an={layout:"stacked",decoration:"none"},Hn=`_type, _id, _rev, _updatedAt, title, locationKeys, note, signOff,
2
2
  variants[]{_key, label, note, sections[]{_key, title, service, items[]{
3
3
  _key, name, description, priceNote, dietary, allergenNote, availability,
4
4
  prices[]{_key, label, amount{minor, currency}}, extras[]{_key, name, amount{minor, currency}}
5
- }}}`;var se=/^[A-Za-z][A-Za-z0-9_]{0,63}$/,ae=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;function le(n){if(!n||!Array.isArray(n.types)||n.types.length===0)throw new TypeError("CMS dependencies require document types");let e=[...n.types];for(let o of e)if(typeof o!="string"||!se.test(o))throw new TypeError("Invalid CMS document type");if(n.ids!==void 0&&!Array.isArray(n.ids))throw new TypeError("Invalid CMS document IDs");let t=n.ids===void 0?void 0:[...n.ids];for(let o of t??[])if(typeof o!="string"||!ae.test(o)||/^(drafts|versions)\./.test(o))throw new TypeError("Invalid CMS document ID");if(new Set(e).size+new Set(t).size>128)throw new TypeError("Too many CMS tags");return Object.freeze({types:Object.freeze(e),...t===void 0?{}:{ids:Object.freeze(t)}})}function O(n){if(!n||typeof n.name!="string"||!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(n.name)||typeof n.query!="string"||n.query.trim()===""||typeof n.resolve!="function")throw new TypeError("Invalid CMS query configuration");let e=n.params;if(!e||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new TypeError("CMS params must be plain JSON scalars");let t={};for(let o of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,o);if(typeof o!="string"||!r||!Object.hasOwn(r,"value")||!r.enumerable)throw new TypeError("CMS params must be plain JSON scalars");let i=r.value;if(!(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"&&Number.isFinite(i)))throw new TypeError("CMS params must be plain JSON scalars");Object.defineProperty(t,o,{value:i,enumerable:!0})}return Object.freeze({name:n.name,query:n.query,params:Object.freeze(t),dependencies:le(n.dependencies),resolve:n.resolve})}function m(n,e){throw new h("menu",[`${n} ${e}`])}function fn(n,e,t=new Set,o){if(n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n))return n;if(typeof n!="object"||n===null)return m(e,"is not plain JSON data");try{if(t.has(n))return m(e,"is not acyclic JSON data");let r=Array.isArray(n),i=Object.getPrototypeOf(n);if(r?i!==Array.prototype:i!==Object.prototype&&i!==null)return m(e,"is not an ordinary saved object");t.add(n);let a=Reflect.ownKeys(n),s=r?[]:{},c=0,l=0;for(let u of a){if(typeof u!="string")return m(e,"has a symbol key");let d=r&&u!=="length"?`${e}[${u}]`:`${e}.${u}`,p;try{p=u==="_id"&&o!==void 0?o:Object.getOwnPropertyDescriptor(n,u)}catch{return m(d,"could not be snapshotted as plain JSON data")}if(!p||!Object.hasOwn(p,"value"))return m(d,"is not a saved data property");if(r&&u==="length"){let g=p.value;if(typeof g!="number"||!Number.isSafeInteger(g)||g<0)return m(d,"is not a saved list length");c=g;continue}if(!p.enumerable||r&&!/^(0|[1-9]\d*)$/.test(u))return m(d,"is not a JSON data property");let y=p.value,f=fn(y,d,t);Object.defineProperty(s,u,{value:f,enumerable:!0,writable:!0,configurable:!0}),l++}return r&&(l!==c||s.length!==c)?m(e,"is not a complete saved list"):s}catch(r){if(r instanceof h)throw r;return m(e,"could not be snapshotted as plain JSON data")}finally{t.delete(n)}}function N(n,e){return n===null||typeof n!="object"||Array.isArray(n)||Object.getPrototypeOf(n)!==Object.prototype&&Object.getPrototypeOf(n)!==null?m(e,"is not an ordinary saved object"):n}function b(n,e,t=!0){return typeof n!="string"||t&&n.trim()===""?m(e,"is not saved text"):n}function R(n,e,t){return n[e]===void 0||n[e]===null?{}:{[e]:b(n[e],`${t}.${e}`,!1)}}function x(n,e,t){return n==null?[]:_(n)?n.map((o,r)=>t(o,`${e}[${String(r)}]`)):m(e,"is not a complete saved list")}function On(n,e){let t=N(n,e);if(typeof t.minor!="number"||!Number.isSafeInteger(t.minor)||t.minor<0)return m(`${e}.minor`,"is not a whole non-negative safe amount");let o=b(t.currency,`${e}.currency`);return/^[A-Z]{3}$/.test(o)?{minor:t.minor,currency:o}:m(`${e}.currency`,"is not a three-letter currency code")}function ue(n,e){let t=N(n,e);return{_key:b(t._key,`${e}._key`),amount:On(t.amount,`${e}.amount`),...R(t,"label",e)}}function ce(n,e){let t=N(n,e);return{_key:b(t._key,`${e}._key`),name:b(t.name,`${e}.name`),amount:On(t.amount,`${e}.amount`)}}function pe(n,e){let t=N(n,e),o=t.availability??"available";return o!=="available"&&o!=="sold-out"&&o!=="hidden"?m(`${e}.availability`,"is not an availability choice"):{_key:b(t._key,`${e}._key`),name:b(t.name,`${e}.name`),...R(t,"description",e),...R(t,"priceNote",e),...R(t,"allergenNote",e),prices:x(t.prices,`${e}.prices`,ue),extras:x(t.extras,`${e}.extras`,ce),dietary:x(t.dietary,`${e}.dietary`,b),availability:o}}function de(n,e){let t=N(n,e);return{_key:b(t._key,`${e}._key`),title:b(t.title,`${e}.title`),...R(t,"service",e),items:x(t.items,`${e}.items`,pe)}}function ye(n,e){let t=N(n,e);return{_key:b(t._key,`${e}._key`),label:b(t.label,`${e}.label`),...R(t,"note",e),sections:x(t.sections,`${e}.sections`,de)}}function fe(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n._id;return typeof e=="string"&&e.trim()!==""&&!/^(drafts|versions)\./.test(e)}function ge(n,e="menu"){return xn(fn(n,e),e)}function Rn(n,e){if(n==null||typeof n!="object")return null;let t;try{t=Object.getOwnPropertyDescriptor(n,"_id")}catch{return m(`${e}._id`,"could not be snapshotted as plain JSON data")}if(t&&!Object.hasOwn(t,"value"))return m(`${e}._id`,"is not a saved data property");let o=t?.value;return typeof o!="string"||o.trim()===""||/^(drafts|versions)\./.test(o)?null:xn(fn(n,e,new Set,t),e)}function xn(n,e){let t=N(n,e);if(t._type!=="menu")return m(`${e}._type`,"is not menu");if(!fe(t))return m(`${e}._id`,"is not a published menu identity");let o=b(t._updatedAt,`${e}._updatedAt`);if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(o)||!Number.isFinite(Date.parse(o)))return m(`${e}._updatedAt`,"is not an update date");let r=x(t.variants,`${e}.variants`,ye);return r.length===0?m(`${e}.variants`,"has no menu choices"):{_type:"menu",_id:b(t._id,`${e}._id`),_rev:b(t._rev,`${e}._rev`),_updatedAt:o,title:b(t.title,`${e}.title`),locationKeys:x(t.locationKeys,`${e}.locationKeys`,b),variants:r,...R(t,"note",e),...Object.hasOwn(t,"signOff")?{signOff:t.signOff}:{}}}function Nn(n){if(n===null)return!0;try{return ge(n),!0}catch{return!1}}var $=["media-end","media-start","media-below"],U=["beside","stacked"],j=["staggered","aligned"],L={Split:"media-end",HeadingList:"beside",StaggerRow:"staggered"},Ln={featureStoriesBlock:"feature_stories",surfaceCardBlock:"cta",accentBandBlock:"accent_band",locationsBlock:"locations",textMediaBlock:"text_media",faqBlock:"faq",galleryBlock:"gallery",contactBlock:"contact",menuBlock:"menu"},Z=2,V=4,T={layoutDefaulted:"section.layout.defaulted",unknownType:"section.type.unknown",imageMissingAlt:"section.image.missing-alt",imageMissingAsset:"section.image.missing-asset",emptySkipped:"section.empty.skipped",menuUnavailable:"section.menu.unavailable"};var S=n=>n!==null&&typeof n=="object"&&!Array.isArray(n),E=n=>typeof n=="string"&&n.trim()!=="",G=n=>n===null||typeof n=="string",D=n=>n===null||typeof n=="string"&&X.test(n),Mn=n=>typeof n=="string"&&v.test(n),w=n=>E(n)||S(n)&&E(n.text)&&(n.copySource==="captured"||n.copySource==="proposed"),C=n=>n===null||w(n),Dn=n=>S(n)&&w(n.label)&&Mn(n.href),q=n=>n===null||Dn(n),sn=n=>n===null||typeof n=="string"&&Y.test(n),M=(n,e)=>n.some(t=>t===e),gn=n=>S(n)&&E(n.asset)&&E(n.alt)&&G(n.caption)&&(n.hotspot===null||S(n.hotspot)&&typeof n.hotspot.x=="number"&&typeof n.hotspot.y=="number");function Pn(n){if(!S(n))return!1;switch(n.kind){case"campaign":return q(n.action)&&_(n.images)&&n.images.every(e=>typeof e=="string"&&D(e));case"locations":return(n.anchor===null||typeof n.anchor=="string"&&Y.test(n.anchor))&&w(n.heading)&&C(n.tail)&&D(n.image);case"feature_stories":return w(n.heading)&&C(n.tail)&&_(n.items)&&n.items.length>0&&n.items.every(e=>S(e)&&w(e.heading)&&w(e.body)&&Dn(e.action)&&D(e.image)&&nn.some(t=>t===e.shape)&&typeof e.card=="boolean");case"accent_band":return w(n.heading)&&w(n.body)&&q(n.action)&&D(n.image);case"cta":return E(n.heading)&&G(n.body)&&S(n.link)&&E(n.link.label)&&Mn(n.link.href);default:return!1}}function me(n){if(!S(n))return!1;switch(n.kind){case"campaign":return!1;case"menu":return M(J,n.layout)&&M(K,n.decoration)&&n.menu!==null&&Nn(n.menu);case"text_media":return sn(n.anchor)&&M($,n.layout)&&w(n.heading)&&C(n.tail)&&w(n.body)&&q(n.action)&&(n.image===null||gn(n.image));case"faq":return sn(n.anchor)&&M(U,n.layout)&&w(n.heading)&&C(n.tail)&&C(n.intro)&&_(n.items)&&n.items.length>0&&n.items.every(e=>S(e)&&w(e.question)&&w(e.answer));case"gallery":return sn(n.anchor)&&M(j,n.layout)&&C(n.heading)&&_(n.images)&&n.images.length>0&&n.images.every(gn);case"contact":return sn(n.anchor)&&M($,n.layout)&&w(n.heading)&&C(n.body)&&typeof n.showEmail=="boolean"&&typeof n.showPhone=="boolean"&&q(n.action)&&(n.image===null||gn(n.image));default:return Pn(n)}}function he(n,e){if(n===void 0)return e===void 0;if(!_(n)||!n.every(me)||!_(e)||!e.every(i=>S(i)&&M(Object.values(T),i.code)&&E(i.where)))return!1;let t=n,o=t.flatMap(i=>"anchor"in i&&i.anchor!==null?[i.anchor]:[]);return new Set(o).size!==o.length?!1:t.flatMap(i=>{switch(i.kind){case"text_media":case"contact":case"accent_band":return[i.action?.href];case"feature_stories":return i.items.map(a=>a.action.href);case"cta":return[i.link.href];default:return[]}}).every(i=>i===void 0||!i.startsWith("#")||o.includes(i.slice(1)))}function Hn(n){if(!S(n)||!G(n.intro)||!D(n.photo)||!_(n.blocks))return!1;let e=n.hero;if(e!==null&&(!S(e)||!w(e.heading)||!C(e.subline)||!C(e.intro)||!D(e.image)||!D(e.inset)||!q(e.cta)||!q(e.secondaryCta))||!n.blocks.every(Pn))return!1;let t=n,o=t.blocks.flatMap(i=>i.kind==="locations"&&i.anchor!==null?[i.anchor]:[]);return new Set(o).size!==o.length?!1:[t.hero?.cta?.href,t.hero?.secondaryCta?.href,...t.blocks.flatMap(i=>{switch(i.kind){case"campaign":case"accent_band":return[i.action?.href];case"feature_stories":return i.items.map(a=>a.action.href);case"cta":return[i.link.href];default:return[]}})].every(i=>i===void 0||!i.startsWith("#")||o.includes(i.slice(1)))}function Un(n){return _(n)&&n.every(e=>S(e)&&E(e.where)&&typeof e.text=="string")}function jn(n){return n===null||S(n)&&Hn(n.composition)&&typeof n.body=="string"&&Un(n.proposedCopy)&&typeof n.campaign=="string"&&["shown","off","not-started","ended","none"].includes(n.campaign)}function mn(n){return n===null||S(n)&&E(n.slug)&&E(n.title)&&Hn(n.composition)&&typeof n.body=="string"&&typeof n.migrated=="boolean"&&Un(n.proposedCopy)&&he(n.sections,n.warnings)}function Gn(n){return n===null||S(n)&&E(n.name)&&G(n.description)&&S(n.contact)&&G(n.contact.email)&&G(n.contact.phone)&&_(n.social)&&n.social.every(e=>S(e)&&E(e.network)&&typeof e.url=="string"&&/^https?:\/\//.test(e.url))}var an="malformed-content",h=class extends Error{code=an;documentId;problems;constructor(e,t){super(`${an}: ${e}: ${t.join("; ")}`),this.name="MalformedContentError",this.documentId=e,this.problems=t}},X=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,v=/^(?:\/(?![/\\])[^\s]*|#[a-z][a-z0-9]*(?:-[a-z0-9]+)*|mailto:[^\s@]+@[^\s@]+|tel:\+?[0-9][0-9 ()-]*|https?:\/\/[^\s/]+[^\s]*)$/,Y=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,nn=["wide","tall","round","free"],P="homePage",H="siteSettings",F=class{problems=[];proposed=[];fail(e,t){return this.problems.push(`${e} ${t}`),null}object(e,t){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:this.fail(t,"is not an object")}dense(e,t){return _(e)?!0:(this.fail(t,"contains missing entries"),!1)}optionalString(e,t){return e==null?null:typeof e=="string"?e.trim()===""?null:e:this.fail(t,"is not text")}copy(e,t){if(e==null)return null;let o=this.object(e,t);if(o===null)return null;let r=o.text,i=o.copySource;return r!==void 0&&typeof r!="string"?this.fail(`${t}.text`,"is not text"):i!==void 0&&i!=="captured"&&i!=="proposed"?this.fail(`${t}.copySource`,`is ${JSON.stringify(i)}, not captured or proposed`):typeof r!="string"||r.trim()===""?null:i==="proposed"?(this.proposed.push({where:t,text:r}),{text:r,copySource:"proposed"}):i==="captured"?{text:r,copySource:"captured"}:r}requiredCopy(e,t){let o=this.copy(e,t);return o===null&&!this.problems.some(r=>r.startsWith(t))&&this.fail(t,"is missing its words"),o}photo(e,t){return e==null?null:typeof e=="string"&&X.test(e)?e:this.fail(t,`is ${JSON.stringify(e)}, not a photo library slug`)}photos(e,t,o){return e==null?[]:Array.isArray(e)?this.dense(e,t)?(e.length>o&&this.fail(t,`holds ${String(e.length)} photos; at most ${String(o)}`),e.map((r,i)=>this.photo(r,`${t}[${String(i)}]`)).filter(r=>r!==null)):[]:(this.fail(t,"is not a list of photos"),[])}action(e,t){if(e==null)return null;let o=this.object(e,t);if(o===null)return null;let r=this.requiredCopy(o.label,`${t}.label`),i=o.href;return typeof i!="string"||!v.test(i)?this.fail(`${t}.href`,`is ${JSON.stringify(i)}, not a site path, #jump-link, mailto:, tel: or web address`):r===null?null:{label:r,href:i}}requiredAction(e,t){return e==null?this.fail(t,"is missing"):this.action(e,t)}};function on(n){return typeof n=="string"?n:n.text}function qn(n){let e=new F,t=Sn(n,"body",e);if(e.problems.length>0)throw new h("body",e.problems);return t}function Sn(n,e,t){if(n==null)return"";if(!Array.isArray(n))return t.fail(e,"is not rich text"),"";if(!t.dense(n,e))return"";let o=[],r=!1;return n.forEach((i,a)=>{let s=`${e}[${String(a)}]`,c=t.object(i,s);if(c===null)return;if(c._type!=="block"){t.fail(s,`is a ${JSON.stringify(c._type)}; only text is supported in rich text so far`);return}let l=_e(c,s,t),u=c.listItem,d=c.style??"normal",p;if(u==="bullet"||u==="number"){let f=typeof c.level=="number"&&c.level>1?c.level:1;p=`${" ".repeat(f-1)}${u==="bullet"?"-":"1."} ${l}`}else if(d==="h2")p=`## ${l}`;else if(d==="h3")p=`### ${l}`;else if(d==="blockquote")p=`> ${l}`;else if(d==="normal")p=l;else{t.fail(`${s}.style`,`is ${JSON.stringify(d)}, which the schema does not offer`);return}let y=u==="bullet"||u==="number";o.length>0&&o.push(y&&r?`
5
+ }}}`;var me=/^[A-Za-z][A-Za-z0-9_]{0,63}$/,he=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;function Se(n){if(!n||!Array.isArray(n.types)||n.types.length===0)throw new TypeError("CMS dependencies require document types");let e=[...n.types];for(let o of e)if(typeof o!="string"||!me.test(o))throw new TypeError("Invalid CMS document type");if(n.ids!==void 0&&!Array.isArray(n.ids))throw new TypeError("Invalid CMS document IDs");let t=n.ids===void 0?void 0:[...n.ids];for(let o of t??[])if(typeof o!="string"||!he.test(o)||/^(drafts|versions)\./.test(o))throw new TypeError("Invalid CMS document ID");if(new Set(e).size+new Set(t).size>128)throw new TypeError("Too many CMS tags");return Object.freeze({types:Object.freeze(e),...t===void 0?{}:{ids:Object.freeze(t)}})}function j(n){if(!n||typeof n.name!="string"||!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(n.name)||typeof n.query!="string"||n.query.trim()===""||typeof n.resolve!="function")throw new TypeError("Invalid CMS query configuration");let e=n.params;if(!e||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new TypeError("CMS params must be plain JSON scalars");let t={};for(let o of Reflect.ownKeys(e)){let i=Object.getOwnPropertyDescriptor(e,o);if(typeof o!="string"||!i||!Object.hasOwn(i,"value")||!i.enumerable)throw new TypeError("CMS params must be plain JSON scalars");let r=i.value;if(!(r===null||typeof r=="string"||typeof r=="boolean"||typeof r=="number"&&Number.isFinite(r)))throw new TypeError("CMS params must be plain JSON scalars");Object.defineProperty(t,o,{value:r,enumerable:!0})}return Object.freeze({name:n.name,query:n.query,params:Object.freeze(t),dependencies:Se(n.dependencies),resolve:n.resolve})}function b(n,e){throw new I("menu",[`${n} ${e}`])}function kn(n,e,t=new Set,o){if(n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n))return n;if(typeof n!="object"||n===null)return b(e,"is not plain JSON data");try{if(t.has(n))return b(e,"is not acyclic JSON data");let i=Array.isArray(n),r=Object.getPrototypeOf(n);if(i?r!==Array.prototype:r!==Object.prototype&&r!==null)return b(e,"is not an ordinary saved object");t.add(n);let l=Reflect.ownKeys(n),s=i?[]:{},a=0,c=0;for(let u of l){if(typeof u!="string")return b(e,"has a symbol key");let d=i&&u!=="length"?`${e}[${u}]`:`${e}.${u}`,y;try{y=u==="_id"&&o!==void 0?o:Object.getOwnPropertyDescriptor(n,u)}catch{return b(d,"could not be snapshotted as plain JSON data")}if(!y||!Object.hasOwn(y,"value"))return b(d,"is not a saved data property");if(i&&u==="length"){let f=y.value;if(typeof f!="number"||!Number.isSafeInteger(f)||f<0)return b(d,"is not a saved list length");a=f;continue}if(!y.enumerable||i&&!/^(0|[1-9]\d*)$/.test(u))return b(d,"is not a JSON data property");let g=y.value,p=kn(g,d,t);Object.defineProperty(s,u,{value:p,enumerable:!0,writable:!0,configurable:!0}),c++}return i&&(c!==a||s.length!==a)?b(e,"is not a complete saved list"):s}catch(i){if(i instanceof I)throw i;return b(e,"could not be snapshotted as plain JSON data")}finally{t.delete(n)}}function q(n,e){return n===null||typeof n!="object"||Array.isArray(n)||Object.getPrototypeOf(n)!==Object.prototype&&Object.getPrototypeOf(n)!==null?b(e,"is not an ordinary saved object"):n}function $(n,e,t=!0){return typeof n!="string"||t&&n.trim()===""?b(e,"is not saved text"):n}function U(n,e,t){return n[e]===void 0||n[e]===null?{}:{[e]:$(n[e],`${t}.${e}`,!1)}}function B(n,e,t){return n==null?[]:h(n)?n.map((o,i)=>t(o,`${e}[${String(i)}]`)):b(e,"is not a complete saved list")}function Pn(n,e){let t=q(n,e);if(typeof t.minor!="number"||!Number.isSafeInteger(t.minor)||t.minor<0)return b(`${e}.minor`,"is not a whole non-negative safe amount");let o=$(t.currency,`${e}.currency`);return/^[A-Z]{3}$/.test(o)?{minor:t.minor,currency:o}:b(`${e}.currency`,"is not a three-letter currency code")}function ke(n,e){let t=q(n,e);return{_key:$(t._key,`${e}._key`),amount:Pn(t.amount,`${e}.amount`),...U(t,"label",e)}}function be(n,e){let t=q(n,e);return{_key:$(t._key,`${e}._key`),name:$(t.name,`${e}.name`),amount:Pn(t.amount,`${e}.amount`)}}function _e(n,e){let t=q(n,e),o=t.availability??"available";return o!=="available"&&o!=="sold-out"&&o!=="hidden"?b(`${e}.availability`,"is not an availability choice"):{_key:$(t._key,`${e}._key`),name:$(t.name,`${e}.name`),...U(t,"description",e),...U(t,"priceNote",e),...U(t,"allergenNote",e),prices:B(t.prices,`${e}.prices`,ke),extras:B(t.extras,`${e}.extras`,be),dietary:B(t.dietary,`${e}.dietary`,$),availability:o}}function we(n,e){let t=q(n,e);return{_key:$(t._key,`${e}._key`),title:$(t.title,`${e}.title`),...U(t,"service",e),items:B(t.items,`${e}.items`,_e)}}function Ie(n,e){let t=q(n,e);return{_key:$(t._key,`${e}._key`),label:$(t.label,`${e}.label`),...U(t,"note",e),sections:B(t.sections,`${e}.sections`,we)}}function $e(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n._id;return typeof e=="string"&&e.trim()!==""&&!/^(drafts|versions)\./.test(e)}function Te(n,e="menu"){return Un(kn(n,e),e)}function jn(n,e){if(n==null||typeof n!="object")return null;let t;try{t=Object.getOwnPropertyDescriptor(n,"_id")}catch{return b(`${e}._id`,"could not be snapshotted as plain JSON data")}if(t&&!Object.hasOwn(t,"value"))return b(`${e}._id`,"is not a saved data property");let o=t?.value;return typeof o!="string"||o.trim()===""||/^(drafts|versions)\./.test(o)?null:Un(kn(n,e,new Set,t),e)}function Un(n,e){let t=q(n,e);if(t._type!=="menu")return b(`${e}._type`,"is not menu");if(!$e(t))return b(`${e}._id`,"is not a published menu identity");let o=$(t._updatedAt,`${e}._updatedAt`);if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(o)||!Number.isFinite(Date.parse(o)))return b(`${e}._updatedAt`,"is not an update date");let i=B(t.variants,`${e}.variants`,Ie);return i.length===0?b(`${e}.variants`,"has no menu choices"):{_type:"menu",_id:$(t._id,`${e}._id`),_rev:$(t._rev,`${e}._rev`),_updatedAt:o,title:$(t.title,`${e}.title`),locationKeys:B(t.locationKeys,`${e}.locationKeys`,$),variants:i,...U(t,"note",e),...Object.hasOwn(t,"signOff")?{signOff:t.signOff}:{}}}function Bn(n){if(n===null)return!0;try{return Te(n),!0}catch{return!1}}var bn=["columns","rows"],_n=40,wn="siteHero.layout.defaulted",In="siteHero.tagline.dropped",$n="siteHero.taglines.defaulted";var N={key:"hero",documentId:"siteHero",documentType:"siteHero",fields:[{name:"heading",label:"Heading",noun:{article:"a",word:"heading"},kind:"single-line",required:!0,minLength:1,maxLength:80,noTrailingFullStop:!0},{name:"intro",label:"Introduction",noun:{article:"an",word:"introduction"},kind:"multi-line",required:!0,minLength:1,maxLength:320}],copy:{currentTitle:"On your site now",editTitle:"Edit and publish",empty:"Your site has no hero text yet. Whatever you publish below becomes its first version."}};function Ae(n,e){let{article:t,word:o}=n.noun;if(e.length===0)return n.required?`Enter ${t} ${o}.`:null;let i=[...e].length;return i<n.minLength?`Make the ${o} at least ${String(n.minLength)} characters. It is ${String(i)} now.`:i>n.maxLength?`Keep the ${o} to ${String(n.maxLength)} characters or fewer. It is ${String(i)} now.`:e.includes("\u2014")?`The ${o} contains a long dash. Use a comma, a colon or a short dash instead.`:n.kind==="single-line"&&/[\r\n]/.test(e)?`The ${o} must be a single line.`:n.noTrailingFullStop===!0&&e.endsWith(".")?`${o.charAt(0).toUpperCase()}${o.slice(1)}s on your site do not end with a full stop. Remove the last full stop.`:null}function nn(n,e){let t={},o={};for(let i of n.fields){let r=Object.hasOwn(e,i.name)?e[i.name]:void 0,l=typeof r=="string"?r.trim():"",s=Ae(i,l);Object.defineProperty(s===null?t:o,i.name,{value:s??l,enumerable:!0})}return Object.keys(o).length>0?{ok:!1,errors:o}:{ok:!0,value:t}}function Gn(n){if(!Array.isArray(n))return{ok:!1,error:"Enter a list of taglines."};let e=N.fields[0];if(!e)throw new TypeError("Missing siteHero heading definition");let t={...e,name:"text",noun:{article:"a",word:"tagline"},maxLength:_n},o=[],i=[],r=new Set;for(let[l,s]of n.entries()){if(!s||typeof s!="object"||Array.isArray(s)){i.push({index:l,error:"Enter a key and text for each tagline."});continue}let a=s,c=Object.hasOwn(a,"key")?a.key:void 0;if(typeof c!="string"||!/^[a-z][a-z0-9_-]{0,31}$/.test(c)){i.push({index:l,error:"Use a lowercase key of 1 to 32 letters, numbers, short dashes or underscores, starting with a letter."});continue}if(r.has(c)){i.push({index:l,error:"Use each tagline key only once."});continue}let u=nn({...N,fields:[t]},a);if(!u.ok){i.push({index:l,error:u.errors.text??"Invalid tagline."});continue}let d=u.value.text??"";if((d.match(/\p{L}/gu)?.length??0)>=2&&!/\p{Ll}/u.test(d)){i.push({index:l,error:"Use sentence case for the tagline, rather than all capitals."});continue}r.add(c),o.push({key:c,text:d})}return{ok:!0,value:o,dropped:i}}function Tn(n){let e=Gn(n);if(!e.ok)return e;let t=e.dropped[0];return t?{ok:!1,error:t.error}:{ok:!0,value:e.value}}function qn(n){return bn.some(e=>n===e)}function An(n,e){let t=nn(N,e),o=Tn(e.taglines??[]);if(!t.ok||!o.ok||e.layout!==void 0&&!qn(e.layout))throw new TypeError("Invalid siteHero fallback");let i={heading:t.value.heading??"",intro:t.value.intro??"",layout:e.layout??"columns",taglines:o.value};if(n===null||typeof n!="object"||Array.isArray(n))return{data:i,fallbackFields:["$"]};let r=n,l=nn(N,r),s=l.ok?[]:Object.keys(l.errors);for(let y of N.fields)if(!s.includes(y.name)){let g=l.ok?l.value[y.name]:r[y.name];typeof g=="string"&&(y.name==="heading"||y.name==="intro")&&(i[y.name]=g.trim())}let a=Object.hasOwn(r,"layout")?r.layout:void 0,c=[];qn(a)?i.layout=a:(i.layout="columns",s.push("layout"),c.push(wn));let u=Gn(Object.hasOwn(r,"taglines")?r.taglines:void 0);if(u.ok){i.taglines=u.value;for(let{index:y}of u.dropped)s.push(`taglines[${String(y)}]`);u.dropped.length>0&&c.push(In)}else s.push("taglines"),c.push($n);let d=[...N.fields.map(y=>y.name),"layout","taglines"].every(y=>s.includes(y));return{data:i,fallbackFields:d?["$"]:s,...c.length>0?{warnings:c}:{}}}function Yn(){return j({name:"siteHero.v1",query:'*[_id == $id && _type == "siteHero"][0]{heading,intro,layout,taglines}',params:{id:"siteHero"},dependencies:{types:["siteHero"],ids:["siteHero"]},resolve:An})}var L=["media-end","media-start","media-below"],R=["beside","stacked"],D=["staggered","aligned"],O={Split:"media-end",HeadingList:"beside",StaggerRow:"staggered"},Fn={featureStoriesBlock:"feature_stories",surfaceCardBlock:"cta",accentBandBlock:"accent_band",locationsBlock:"locations",textMediaBlock:"text_media",faqBlock:"faq",galleryBlock:"gallery",contactBlock:"contact",textItemsBlock:"text_items",stepsBlock:"steps",linkListBlock:"link_list",menuBlock:"menu"},en=2,tn=4,A={layoutDefaulted:"section.layout.defaulted",unknownType:"section.type.unknown",imageMissingAlt:"section.image.missing-alt",imageMissingAsset:"section.image.missing-asset",emptySkipped:"section.empty.skipped",menuUnavailable:"section.menu.unavailable"};var S=n=>n!==null&&typeof n=="object"&&!Array.isArray(n),T=n=>typeof n=="string"&&n.trim()!=="",z=n=>n===null||typeof n=="string",M=n=>n===null||typeof n=="string"&&on.test(n),Cn=n=>typeof n=="string"&&rn.test(n),_=n=>T(n)||S(n)&&T(n.text)&&(n.copySource==="captured"||n.copySource==="proposed"),C=n=>n===null||_(n),Wn=n=>S(n)&&_(n.label)&&Cn(n.href),Q=n=>n===null||Wn(n),zn=n=>S(n)&&h(n.children)&&n.children.length>0&&n.children.every(e=>S(e)&&typeof e.text=="string"&&h(e.marks)&&e.marks.every(t=>typeof t=="string"))&&h(n.markDefs)&&n.markDefs.every(e=>S(e)&&T(e.key)&&typeof e.href=="string"),Ee=n=>h(n)&&n.length>0&&h(n[0])&&n[0].length>0&&n.every(e=>h(e)&&e.length===n[0].length&&e.every(t=>zn(t)&&t.children.map(o=>o.text).join("").trim()!=="")),Rn=n=>typeof n=="string"||h(n)&&n.length>0&&n.every(e=>S(e)&&(e.kind==="heading"?T(e.text):e.kind==="block"?E(["normal","h2","h3","blockquote"],e.style)&&(e.listItem===null||E(["bullet","number"],e.listItem))&&typeof e.level=="number"&&zn(e.content):e.kind==="table"&&Ee(e.rows))),G=n=>n===null||typeof n=="string"&&J.test(n),E=(n,e)=>n.some(t=>t===e),En=n=>S(n)&&T(n.asset)&&T(n.alt)&&z(n.caption)&&(n.hotspot===null||S(n.hotspot)&&typeof n.hotspot.x=="number"&&typeof n.hotspot.y=="number");function Qn(n){if(!S(n))return!1;switch(n.kind){case"campaign":return Q(n.action)&&h(n.images)&&n.images.every(e=>typeof e=="string"&&M(e));case"locations":return(n.anchor===null||typeof n.anchor=="string"&&J.test(n.anchor))&&_(n.heading)&&C(n.tail)&&M(n.image);case"feature_stories":return _(n.heading)&&C(n.tail)&&h(n.items)&&n.items.length>0&&n.items.every(e=>S(e)&&_(e.heading)&&_(e.body)&&Wn(e.action)&&M(e.image)&&sn.some(t=>t===e.shape)&&typeof e.card=="boolean");case"accent_band":return _(n.heading)&&(n.tail===void 0||C(n.tail))&&_(n.body)&&Q(n.action)&&M(n.image);case"cta":return T(n.heading)&&(n.image===void 0||M(n.image))&&z(n.body)&&S(n.link)&&T(n.link.label)&&Cn(n.link.href);default:return!1}}function Ce(n){if(!S(n))return!1;switch(n.kind){case"campaign":return!1;case"menu":return E(X,n.layout)&&E(v,n.decoration)&&n.menu!==null&&Bn(n.menu);case"text_media":return G(n.anchor)&&E(L,n.layout)&&_(n.heading)&&C(n.tail)&&_(n.body)&&Q(n.action)&&(n.image===null||En(n.image));case"faq":return G(n.anchor)&&E(R,n.layout)&&C(n.heading)&&C(n.tail)&&C(n.intro)&&h(n.items)&&n.items.length>0&&n.items.every(e=>S(e)&&_(e.question)&&(_(e.answer)||S(e.answer)&&e.answer.kind==="rich"&&Rn(e.answer.body)));case"gallery":return G(n.anchor)&&E(D,n.layout)&&C(n.heading)&&h(n.images)&&n.images.length>0&&n.images.every(En);case"contact":return G(n.anchor)&&E(L,n.layout)&&_(n.heading)&&C(n.body)&&typeof n.showEmail=="boolean"&&typeof n.showPhone=="boolean"&&Q(n.action)&&(n.image===null||En(n.image));case"text_items":return G(n.anchor)&&E(D,n.layout)&&h(n.items)&&n.items.length>=2&&n.items.length<=4&&n.items.every(e=>S(e)&&_(e.title)&&_(e.body));case"steps":return G(n.anchor)&&E(R,n.layout)&&_(n.heading)&&_(n.intro)&&h(n.items)&&n.items.length>0&&n.items.every(e=>S(e)&&_(e.title)&&_(e.body));case"link_list":return G(n.anchor)&&E(R,n.layout)&&_(n.heading)&&C(n.tail)&&h(n.links)&&n.links.length>0&&n.links.every(e=>S(e)&&T(e.title)&&Cn(e.href));default:return Qn(n)}}function Re(n,e){if(n===void 0)return e===void 0;if(!h(n)||!n.every(Ce)||!h(e)||!e.every(r=>S(r)&&E(Object.values(A),r.code)&&T(r.where)))return!1;let t=n,o=t.flatMap(r=>"anchor"in r&&r.anchor!==null?[r.anchor]:[]);return new Set(o).size!==o.length?!1:t.flatMap(r=>{switch(r.kind){case"text_media":case"contact":case"accent_band":return[r.action?.href];case"feature_stories":return r.items.map(l=>l.action.href);case"cta":return[r.link.href];default:return[]}}).every(r=>r===void 0||!r.startsWith("#")||o.includes(r.slice(1)))}function Jn(n){if(!S(n)||!z(n.intro)||!M(n.photo)||!h(n.blocks))return!1;let e=n.hero;if(e!==null&&(!S(e)||!_(e.heading)||!C(e.subline)||!C(e.intro)||!M(e.image)||!M(e.inset)||!Q(e.cta)||!Q(e.secondaryCta))||!n.blocks.every(Qn))return!1;let t=n,o=t.blocks.flatMap(r=>r.kind==="locations"&&r.anchor!==null?[r.anchor]:[]);return new Set(o).size!==o.length?!1:[t.hero?.cta?.href,t.hero?.secondaryCta?.href,...t.blocks.flatMap(r=>{switch(r.kind){case"campaign":case"accent_band":return[r.action?.href];case"feature_stories":return r.items.map(l=>l.action.href);case"cta":return[r.link.href];default:return[]}})].every(r=>r===void 0||!r.startsWith("#")||o.includes(r.slice(1)))}function Kn(n){return h(n)&&n.every(e=>S(e)&&T(e.where)&&typeof e.text=="string")}function Zn(n){return n===null||S(n)&&S(n.composition)&&n.composition.hero!==null&&Jn(n.composition)&&Rn(n.body)&&Kn(n.proposedCopy)&&typeof n.campaign=="string"&&["shown","off","not-started","ended","none"].includes(n.campaign)}function On(n){return n===null||S(n)&&T(n.slug)&&T(n.title)&&Jn(n.composition)&&(n.titleTail===void 0||typeof n.titleTail=="string")&&Rn(n.body)&&typeof n.migrated=="boolean"&&Kn(n.proposedCopy)&&Re(n.sections,n.warnings)}function Vn(n){return n===null||S(n)&&T(n.name)&&z(n.description)&&S(n.contact)&&z(n.contact.email)&&z(n.contact.phone)&&h(n.social)&&n.social.every(e=>S(e)&&T(e.network)&&typeof e.url=="string"&&/^https?:\/\//.test(e.url))}var cn="malformed-content",I=class extends Error{code=cn;documentId;problems;constructor(e,t){super(`${cn}: ${e}: ${t.join("; ")}`),this.name="MalformedContentError",this.documentId=e,this.problems=t}},on=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,rn=/^(?:\/(?![/\\])[^\s]*|#[a-z][a-z0-9]*(?:-[a-z0-9]+)*|mailto:[^\s@]+@[^\s@]+|tel:\+?[0-9][0-9 ()-]*|https?:\/\/[^\s/]+[^\s]*)$/,J=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,sn=["wide","tall","round","free"],F="homePage",W="siteSettings",Z=class{problems=[];proposed=[];fail(e,t){return this.problems.push(`${e} ${t}`),null}object(e,t){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:this.fail(t,"is not an object")}dense(e,t){return h(e)?!0:(this.fail(t,"contains missing entries"),!1)}optionalString(e,t){return e==null?null:typeof e=="string"?e.trim()===""?null:e:this.fail(t,"is not text")}copy(e,t){if(e==null)return null;let o=this.object(e,t);if(o===null)return null;let i=o.text,r=o.copySource;return i!==void 0&&typeof i!="string"?this.fail(`${t}.text`,"is not text"):r!==void 0&&r!=="captured"&&r!=="proposed"?this.fail(`${t}.copySource`,`is ${JSON.stringify(r)}, not captured or proposed`):typeof i!="string"||i.trim()===""?null:r==="proposed"?(this.proposed.push({where:t,text:i}),{text:i,copySource:"proposed"}):r==="captured"?{text:i,copySource:"captured"}:i}requiredCopy(e,t){let o=this.copy(e,t);return o===null&&!this.problems.some(i=>i.startsWith(t))&&this.fail(t,"is missing its words"),o}photo(e,t){return e==null?null:typeof e=="string"&&on.test(e)?e:this.fail(t,`is ${JSON.stringify(e)}, not a photo library slug`)}photos(e,t,o){return e==null?[]:Array.isArray(e)?this.dense(e,t)?(e.length>o&&this.fail(t,`holds ${String(e.length)} photos; at most ${String(o)}`),e.map((i,r)=>this.photo(i,`${t}[${String(r)}]`)).filter(i=>i!==null)):[]:(this.fail(t,"is not a list of photos"),[])}action(e,t){if(e==null)return null;let o=this.object(e,t);if(o===null)return null;let i=this.requiredCopy(o.label,`${t}.label`),r=o.href;return typeof r!="string"||!rn.test(r)?this.fail(`${t}.href`,`is ${JSON.stringify(r)}, not a site path, #jump-link, mailto:, tel: or web address`):i===null?null:{label:i,href:r}}requiredAction(e,t){return e==null?this.fail(t,"is missing"):this.action(e,t)}};function K(n){return typeof n=="string"?n:n.text}function Xn(n){let e=new Z,t=yn(n,"body",e);if(e.problems.length>0)throw new I("body",e.problems);return t}function yn(n,e,t){if(n==null)return"";if(!Array.isArray(n))return t.fail(e,"is not rich text"),"";if(!t.dense(n,e))return"";if(n.some(r=>r!==null&&typeof r=="object"&&!Array.isArray(r)&&r._type==="portableTable"))return Oe(n,e,t);let o=[],i=!1;return n.forEach((r,l)=>{let s=`${e}[${String(l)}]`,a=t.object(r,s);if(a===null)return;if(a._type!=="block"){t.fail(s,`is a ${JSON.stringify(a._type)}; only text is supported in rich text so far`);return}let c=Le(a,s,t),u=a.listItem,d=a.style??"normal",y;if(u==="bullet"||u==="number"){let p=typeof a.level=="number"&&a.level>1?a.level:1;y=`${" ".repeat(p-1)}${u==="bullet"?"-":"1."} ${c}`}else if(d==="h2")y=`## ${c}`;else if(d==="h3")y=`### ${c}`;else if(d==="blockquote")y=`> ${c}`;else if(d==="normal")y=c;else{t.fail(`${s}.style`,`is ${JSON.stringify(d)}, which the schema does not offer`);return}let g=u==="bullet"||u==="number";o.length>0&&o.push(g&&i?`
6
6
  `:`
7
7
 
8
- `),o.push(p),r=y}),o.join("")}var Se={strong:"**",em:"*",code:"`"};function _e(n,e,t){let o=new Map,r=Array.isArray(n.markDefs)?n.markDefs:[];if(!t.dense(r,`${e}.markDefs`))return"";for(let a of r){let s=a;s._type==="link"&&typeof s._key=="string"&&typeof s.href=="string"&&o.set(s._key,s.href)}let i=Array.isArray(n.children)?n.children:[];return t.dense(i,`${e}.children`)?i.map((a,s)=>{let c=a;if(c._type!=="span"||typeof c.text!="string")return t.fail(`${e}.children[${String(s)}]`,"is not a text span"),"";let l=c.text,u=Array.isArray(c.marks)?c.marks:[];if(!t.dense(u,`${e}.children[${String(s)}].marks`))return"";let d=null;for(let p of u){if(typeof p!="string")continue;let y=Se[p];y!==void 0?l=`${y}${l}${y}`:o.has(p)?d=o.get(p)??null:t.fail(`${e}.children[${String(s)}].marks`,`names ${JSON.stringify(p)}, which is neither a style nor a link`)}return d===null?l:`[${l}](${d})`}).join(""):""}function _n(n,e){if(typeof n!="object"||n===null)return"none";let t=n;if(t.enabled!==!0)return"off";let o=typeof t.startsAt=="string"?Date.parse(t.startsAt):null,r=typeof t.endsAt=="string"?Date.parse(t.endsAt):null;return o!==null&&e.getTime()<o?"not-started":r!==null&&e.getTime()>=r?"ended":"shown"}function B(n,e,t){return typeof e._key=="string"?`${n}[_key=="${e._key}"]`:`${n}[${String(t)}]`}function ln(n,e){let t=new F,o=t.object(n,"homePage");if(o===null)throw new h(P,t.problems);let r=typeof o._id=="string"?o._id:P;o._type!=="homePage"&&t.fail("_type",`is ${JSON.stringify(o._type)}, not homePage`);let i=null,a=o.hero===void 0?t.fail("hero","is missing"):t.object(o.hero,"hero");if(a!==null){let f=t.photos(a.photos,"hero.photos",2),g=t.requiredCopy(a.headline,"hero.headline"),k=t.copy(a.subline,"hero.subline"),A=t.copy(a.lead,"hero.lead"),I=t.action(a.primaryAction,"hero.primaryAction"),vn=t.action(a.secondaryAction,"hero.secondaryAction");g!==null&&(i={heading:g,subline:k,intro:A,image:f[0]??null,inset:f[1]??null,cta:I,secondaryCta:vn})}let s=[],c=[],l="",u=_n(o.campaign,e.now);if(u==="shown"){let f=t.object(o.campaign,"campaign");if(f!==null){let g=t.requiredCopy(f.title,"campaign.title"),k=t.photos(f.photos,"campaign.photos",3);k.length===0&&t.fail("campaign.photos","is empty; a shown campaign needs at least one photo");let A=Sn(f.body,"campaign.body",t);A===""&&t.fail("campaign.body","is empty; a shown campaign needs its text"),f.bodyCopySource==="proposed"&&t.proposed.push({where:"campaign.body",text:A});let I=t.action(f.action,"campaign.action");I!==null&&c.push({where:"campaign.action.href",href:I.href}),g!==null&&(l=`# ${on(g)}
8
+ `),o.push(y),i=g}),o.join("")}function un(n){return typeof n=="string"?n:n.map(e=>e.kind==="heading"?e.text:e.kind==="block"?e.content.children.map(t=>t.text).join(""):e.rows.map(t=>t.map(o=>o.children.map(i=>i.text).join("")).join(" ")).join(`
9
+ `)).join(`
9
10
 
10
- ${A}`),s.push({kind:"campaign",action:I,images:k})}}let d=[],p=o.blocks??[];Array.isArray(p)?t.dense(p,"blocks")&&p.forEach((f,g)=>{let k=t.object(f,`blocks[${String(g)}]`);if(k===null)return;let A=B("blocks",k,g),I=Fn(k,A,t);I!==null&&(c.push(...Yn(I,k,A)),I.kind==="locations"&&I.anchor!==null&&(d.includes(I.anchor)&&t.fail(`${A}.jumpLink`,`repeats "${I.anchor}", already used by another section`),d.push(I.anchor)),s.push(I))}):t.fail("blocks","is not a list");let y=[];i?.cta&&y.push({where:"hero.primaryAction.href",href:i.cta.href}),i?.secondaryCta&&y.push({where:"hero.secondaryAction.href",href:i.secondaryCta.href}),y.push(...c);for(let{where:f,href:g}of y)g.startsWith("#")&&!d.includes(g.slice(1))&&t.fail(f,`jumps to ${g}, which no section on the page is named`);if(t.problems.length>0)throw new h(r,t.problems);return{composition:{intro:null,photo:null,hero:i,blocks:s},body:l,campaign:u,proposedCopy:t.proposed}}function Yn(n,e,t){switch(n.kind){case"feature_stories":{let o=Array.isArray(e.stories)?e.stories:[];return n.items.map((r,i)=>({where:`${B(`${t}.stories`,o[i]??{},i)}.action.href`,href:r.action.href}))}case"accent_band":return n.action===null?[]:[{where:`${t}.action.href`,href:n.action.href}];case"cta":return[{where:`${t}.action.href`,href:n.link.href}];default:return[]}}function tn(n,e,t){let o=n.jumpLink;return o==null||o===""?null:typeof o!="string"||!Y.test(o)?t.fail(`${e}.jumpLink`,`is ${JSON.stringify(o)}, not lowercase words joined by hyphens`):o}function Fn(n,e,t){switch(n._type){case"featureStoriesBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),r=t.copy(n.tail,`${e}.tail`),i=n.stories;if(!Array.isArray(i)||i.length===0)return t.fail(`${e}.stories`,"has no stories");if(!t.dense(i,`${e}.stories`))return null;let a=[];return i.forEach((s,c)=>{let l=t.object(s,`${e}.stories[${String(c)}]`);if(l===null)return;let u=B(`${e}.stories`,l,c),d=t.requiredCopy(l.heading,`${u}.heading`),p=t.requiredCopy(l.body,`${u}.body`),y=t.requiredAction(l.action,`${u}.action`),f=t.photo(l.photo,`${u}.photo`),g=l.layout??"wide";if(!nn.includes(g)){t.fail(`${u}.layout`,`is ${JSON.stringify(g)}, not wide, tall, round or free`);return}let k=l.onCard??!1;if(typeof k!="boolean"){t.fail(`${u}.onCard`,"is not on or off");return}d===null||p===null||y===null||a.push({heading:d,body:p,action:y,image:f,shape:g,card:k})}),o===null?null:{kind:"feature_stories",heading:o,tail:r,items:a}}case"surfaceCardBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),r=t.copy(n.body,`${e}.body`),i=t.requiredAction(n.action,`${e}.action`);return o===null||i===null?null:{kind:"cta",heading:on(o),body:r===null?null:on(r),link:{label:on(i.label),href:i.href}}}case"accentBandBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),r=t.requiredCopy(n.body,`${e}.body`),i=t.action(n.action,`${e}.action`),a=t.photo(n.photo,`${e}.photo`);return o===null||r===null?null:{kind:"accent_band",heading:o,body:r,action:i,image:a}}case"locationsBlock":{let o=tn(n,e,t),r=t.requiredCopy(n.heading,`${e}.heading`),i=t.copy(n.tail,`${e}.tail`),a=t.photo(n.photo,`${e}.photo`);return r===null?null:{kind:"locations",anchor:o,heading:r,tail:i,image:a}}default:return t.fail(`${e}._type`,`is ${JSON.stringify(n._type)}, not a section type this reader knows`)}}function en(n,e,t,o,r){let i=n.layout,a=t.find(s=>s===i);return a!==void 0?a:(r.push({code:T.layoutDefaulted,where:`${e}.layout`}),o)}function hn(n,e,t,o){if(n==null)return null;let r=t.object(n,e);if(r===null)return null;let i=r.asset,a=typeof i=="object"&&i!==null?i._ref:void 0;if(typeof a!="string"||a==="")return o.push({code:T.imageMissingAsset,where:`${e}.asset`}),null;let s=r.alt;if(typeof s!="string"||s.trim()==="")return o.push({code:T.imageMissingAlt,where:`${e}.alt`}),null;let c=t.optionalString(r.caption,`${e}.caption`),l=null;if(r.hotspot!==void 0&&r.hotspot!==null){let u=t.object(r.hotspot,`${e}.hotspot`),d=u?.x,p=u?.y;typeof d=="number"&&typeof p=="number"&&d>=0&&d<=1&&p>=0&&p<=1?l={x:d,y:p}:u!==null&&t.fail(`${e}.hotspot`,"is not a point inside the image")}return{asset:a,alt:s,caption:c,hotspot:l}}function be(n){return typeof n=="string"?n.slice(0,64).replace(/[^A-Za-z0-9_.-]/g,"?"):"?"}function ke(n,e,t,o){switch(n._type){case"menuBlock":{let r=Rn(n.menu,`${e}.menu`);if(r===null)return o.push({code:T.menuUnavailable,where:`${e}.menu`}),null;let i=en(n,e,J,rn.layout,o),a=K.find(s=>s===n.decoration);return a===void 0&&o.push({code:T.layoutDefaulted,where:`${e}.decoration`}),{kind:"menu",menu:r,layout:i,decoration:a??rn.decoration}}case"featureStoriesBlock":case"surfaceCardBlock":case"accentBandBlock":case"locationsBlock":{let r=Fn(n,e,t);return r===null||r.kind==="campaign"?null:r}case"textMediaBlock":{let r=tn(n,e,t),i=t.requiredCopy(n.heading,`${e}.heading`),a=t.copy(n.tail,`${e}.tail`),s=t.requiredCopy(n.body,`${e}.body`),c=t.action(n.action,`${e}.action`),l=hn(n.photo,`${e}.photo`,t,o),u=en(n,e,$,L.Split,o);return i===null||s===null?null:{kind:"text_media",anchor:r,layout:u,heading:i,tail:a,body:s,action:c,image:l}}case"faqBlock":{let r=tn(n,e,t),i=t.requiredCopy(n.heading,`${e}.heading`),a=t.copy(n.tail,`${e}.tail`),s=t.copy(n.intro,`${e}.intro`),c=en(n,e,U,L.HeadingList,o),l=n.items;if(!Array.isArray(l)||l.length===0)return t.fail(`${e}.items`,"has no questions");if(!t.dense(l,`${e}.items`))return null;let u=[];return l.forEach((d,p)=>{let y=t.object(d,`${e}.items[${String(p)}]`);if(y===null)return;let f=B(`${e}.items`,y,p);if(y._type!==void 0&&y._type!=="faqItem"){t.fail(`${f}._type`,`is ${JSON.stringify(y._type)}, not faqItem`);return}let g=t.requiredCopy(y.question,`${f}.question`),k=t.requiredCopy(y.answer,`${f}.answer`);g!==null&&k!==null&&u.push({question:g,answer:k})}),i===null?null:{kind:"faq",anchor:r,layout:c,heading:i,tail:a,intro:s,items:u}}case"galleryBlock":{let r=tn(n,e,t),i=t.copy(n.heading,`${e}.heading`),a=en(n,e,j,L.StaggerRow,o),s=n.photos??[];if(!Array.isArray(s))return t.fail(`${e}.photos`,"is not a list of photos");if(!t.dense(s,`${e}.photos`))return null;if(s.length<Z||s.length>V)return t.fail(`${e}.photos`,`holds ${String(s.length)} photos; a gallery shows ${String(Z)} to ${String(V)}`);let c=s.flatMap((l,u)=>{let d=hn(l,B(`${e}.photos`,typeof l=="object"&&l!==null?l:{},u),t,o);return d===null?[]:[d]});return c.length===0?(o.push({code:T.emptySkipped,where:e}),null):{kind:"gallery",anchor:r,layout:a,heading:i,images:c}}case"contactBlock":{let r=tn(n,e,t),i=t.requiredCopy(n.heading,`${e}.heading`),a=t.copy(n.body,`${e}.body`),s=y=>{let f=n[y]??!0;return typeof f=="boolean"?f:(t.fail(`${e}.${y}`,"is not on or off"),!1)},c=s("showEmail"),l=s("showPhone"),u=t.action(n.action,`${e}.action`),d=hn(n.photo,`${e}.photo`,t,o),p=en(n,e,$,L.Split,o);return i===null?null:!c&&!l&&a===null&&u===null?(o.push({code:T.emptySkipped,where:e}),null):{kind:"contact",anchor:r,layout:p,heading:i,body:a,showEmail:c,showPhone:l,action:u,image:d}}default:return o.push({code:T.unknownType,where:`${e}._type`,type:be(n._type)}),null}}function we(n,e,t){switch(n.kind){case"text_media":case"contact":return n.action===null?[]:[{where:`${t}.action.href`,href:n.action.href}];case"menu":case"faq":case"gallery":return[];default:return Yn(n,e,t)}}function Ie(n,e){let t=[],o=[];if(!Array.isArray(n))return e.fail("sections","is not a list"),{sections:t,warnings:o};if(!e.dense(n,"sections"))return{sections:t,warnings:o};let r=[],i=[];n.forEach((a,s)=>{let c=e.object(a,`sections[${String(s)}]`);if(c===null)return;let l=B("sections",c,s),u=ke(c,l,e,o);if(u===null)return;i.push(...we(u,c,l));let d="anchor"in u?u.anchor:null;d!==null&&(r.includes(d)&&e.fail(`${l}.jumpLink`,`repeats "${d}", already used by another section`),r.push(d)),t.push(u)});for(let{where:a,href:s}of i)s.startsWith("#")&&!r.includes(s.slice(1))&&e.fail(a,`jumps to ${s}, which no section on the page is named`);return{sections:t,warnings:o}}function W(n){let e=new F,t=e.object(n,"page");if(t===null)throw new h("page",e.problems);let o=typeof t._id=="string"?t._id:"page";t._type!=="page"&&e.fail("_type",`is ${JSON.stringify(t._type)}, not page`);let r=e.optionalString(t.title,"title");r===null&&e.fail("title","is missing"),t.titleCopySource==="proposed"&&r!==null&&e.proposed.push({where:"title",text:r});let i=t.slug,a=typeof i?.current=="string"&&i.current!==""?i.current:null;a===null&&e.fail("slug.current","is missing");let s=e.copy(t.lead,"lead"),c=e.photo(t.photo,"photo"),l=Sn(t.body,"body",e);t.bodyCopySource==="proposed"&&e.proposed.push({where:"body",text:l});let u=t.sections===void 0||t.sections===null?null:Ie(t.sections,e);if(e.problems.length>0||r===null||a===null)throw new h(o,e.problems);return{slug:a,title:r,composition:{intro:s===null?null:on(s),photo:c,hero:null,blocks:[]},body:l,migrated:t.migrated===!0,proposedCopy:e.proposed,...u===null?{}:u}}function un(n){let e=new F,t=e.object(n,"siteSettings");if(t===null)throw new h(H,e.problems);let o=e.optionalString(t.title,"title");o===null&&e.fail("title","is missing; a site needs its name");let r=e.optionalString(t.description,"description"),i=t.contact===void 0?{}:e.object(t.contact,"contact")??{},a=e.optionalString(i.email,"contact.email"),s=e.optionalString(i.phone,"contact.phone"),c=[],l=t.social??[];if(Array.isArray(l)?e.dense(l,"social")&&l.forEach((u,d)=>{let p=e.object(u,`social[${String(d)}]`);if(p===null)return;let y=e.optionalString(p.network,`social[${String(d)}].network`),f=e.optionalString(p.url,`social[${String(d)}].url`);if(y===null||f===null||!/^https?:\/\//.test(f)){e.fail(`social[${String(d)}]`,"needs a network and a web address");return}c.push({network:y,url:f})}):e.fail("social","is not a list"),e.problems.length>0||o===null)throw new h(H,e.problems);return{name:o,description:r,contact:{email:a,phone:s},social:c}}var Q="*[_id == $id][0]",Bn=`{..., "sections": coalesce(sections[]{..., _type == "menuBlock" => {menu->{${$n}}}}, sections)}`,cn=`*[_type == "page" && defined(slug.current)]|order(slug.current asc)${Bn}`,pn=`*[_type == "page" && slug.current == $slug][0]${Bn}`;function Wn(n){return{home:async({now:e})=>{let t=await n.query(Q,{params:{id:P}});return t==null?null:ln(t,{now:e})},pages:async()=>{let e=await n.query(cn);if(!Array.isArray(e))throw new h("page",["the page query did not return a list"]);if(!_(e))throw new h("page",["the page query contains missing entries"]);return e.map(t=>W(t))},pageBySlug:async e=>{let t=await n.query(pn,{params:{slug:e}});return t==null?null:W(t)},siteSettings:async()=>{let e=await n.query(Q,{params:{id:H}});return e==null?null:un(e)}}}function dn(n,e,t,o){if(!o(e))throw new TypeError("Invalid CMS content fallback");return n==null?{data:e,fallbackFields:["$"]}:{data:t(n),fallbackFields:[]}}function Qn(n){if(!(n instanceof Date)||!Number.isFinite(n.getTime()))throw new TypeError("Invalid CMS campaign date");let e=n.getTime();return O({name:"homePage.v1",query:Q,params:{id:P},dependencies:{types:["homePage"],ids:[P]},resolve:(t,o)=>dn(t,o,r=>ln(r,{now:new Date(e)}),jn)})}function zn(n){if(typeof n!="string"||n==="")throw new TypeError("Invalid CMS page slug");return O({name:"page.v1",query:pn,params:{slug:n},dependencies:{types:["page","menu"]},resolve:(e,t)=>dn(e,t,W,mn)})}function Jn(){return O({name:"pages.v1",query:cn,params:{},dependencies:{types:["page","menu"]},resolve:(n,e)=>dn(n,e,t=>{if(!Array.isArray(t))throw new h("page",["the page query did not return a list"]);if(!_(t))throw new h("page",["the page query contains missing entries"]);return t.map(o=>W(o))},t=>_(t)&&t.every(o=>o!==null&&mn(o)))})}function Kn(){return O({name:"siteSettings.v1",query:Q,params:{id:H},dependencies:{types:["siteSettings"],ids:[H]},resolve:(n,e)=>dn(n,e,un,Gn)})}var kn=["columns","rows"],wn=40,In="siteHero.layout.defaulted",Tn="siteHero.tagline.dropped",En="siteHero.taglines.defaulted";var z={key:"hero",documentId:"siteHero",documentType:"siteHero",fields:[{name:"heading",label:"Heading",noun:{article:"a",word:"heading"},kind:"single-line",required:!0,minLength:1,maxLength:80,noTrailingFullStop:!0},{name:"intro",label:"Introduction",noun:{article:"an",word:"introduction"},kind:"multi-line",required:!0,minLength:1,maxLength:320}],copy:{currentTitle:"On your site now",editTitle:"Edit and publish",empty:"Your site has no hero text yet. Whatever you publish below becomes its first version."}};function Te(n,e){let{article:t,word:o}=n.noun;if(e.length===0)return n.required?`Enter ${t} ${o}.`:null;let r=[...e].length;return r<n.minLength?`Make the ${o} at least ${String(n.minLength)} characters. It is ${String(r)} now.`:r>n.maxLength?`Keep the ${o} to ${String(n.maxLength)} characters or fewer. It is ${String(r)} now.`:e.includes("\u2014")?`The ${o} contains a long dash. Use a comma, a colon or a short dash instead.`:n.kind==="single-line"&&/[\r\n]/.test(e)?`The ${o} must be a single line.`:n.noTrailingFullStop===!0&&e.endsWith(".")?`${o.charAt(0).toUpperCase()}${o.slice(1)}s on your site do not end with a full stop. Remove the last full stop.`:null}function bn(n,e){let t={},o={};for(let r of n.fields){let i=Object.hasOwn(e,r.name)?e[r.name]:void 0,a=typeof i=="string"?i.trim():"",s=Te(r,a);Object.defineProperty(s===null?t:o,r.name,{value:s??a,enumerable:!0})}return Object.keys(o).length>0?{ok:!1,errors:o}:{ok:!0,value:t}}function Vn(n){if(!Array.isArray(n))return{ok:!1,error:"Enter a list of taglines."};let e=z.fields[0];if(!e)throw new TypeError("Missing siteHero heading definition");let t={...e,name:"text",noun:{article:"a",word:"tagline"},maxLength:wn},o=[],r=[],i=new Set;for(let[a,s]of n.entries()){if(!s||typeof s!="object"||Array.isArray(s)){r.push({index:a,error:"Enter a key and text for each tagline."});continue}let c=s,l=Object.hasOwn(c,"key")?c.key:void 0;if(typeof l!="string"||!/^[a-z][a-z0-9_-]{0,31}$/.test(l)){r.push({index:a,error:"Use a lowercase key of 1 to 32 letters, numbers, short dashes or underscores, starting with a letter."});continue}if(i.has(l)){r.push({index:a,error:"Use each tagline key only once."});continue}let u=bn({...z,fields:[t]},c);if(!u.ok){r.push({index:a,error:u.errors.text??"Invalid tagline."});continue}let d=u.value.text??"";if((d.match(/\p{L}/gu)?.length??0)>=2&&!/\p{Ll}/u.test(d)){r.push({index:a,error:"Use sentence case for the tagline, rather than all capitals."});continue}i.add(l),o.push({key:l,text:d})}return{ok:!0,value:o,dropped:r}}function An(n){let e=Vn(n);if(!e.ok)return e;let t=e.dropped[0];return t?{ok:!1,error:t.error}:{ok:!0,value:e.value}}function Zn(n){return kn.some(e=>n===e)}function Cn(n,e){let t=bn(z,e),o=An(e.taglines??[]);if(!t.ok||!o.ok||e.layout!==void 0&&!Zn(e.layout))throw new TypeError("Invalid siteHero fallback");let r={heading:t.value.heading??"",intro:t.value.intro??"",layout:e.layout??"columns",taglines:o.value};if(n===null||typeof n!="object"||Array.isArray(n))return{data:r,fallbackFields:["$"]};let i=n,a=bn(z,i),s=a.ok?[]:Object.keys(a.errors);for(let p of z.fields)if(!s.includes(p.name)){let y=a.ok?a.value[p.name]:i[p.name];typeof y=="string"&&(p.name==="heading"||p.name==="intro")&&(r[p.name]=y.trim())}let c=Object.hasOwn(i,"layout")?i.layout:void 0,l=[];Zn(c)?r.layout=c:(r.layout="columns",s.push("layout"),l.push(In));let u=Vn(Object.hasOwn(i,"taglines")?i.taglines:void 0);if(u.ok){r.taglines=u.value;for(let{index:p}of u.dropped)s.push(`taglines[${String(p)}]`);u.dropped.length>0&&l.push(Tn)}else s.push("taglines"),l.push(En);let d=[...z.fields.map(p=>p.name),"layout","taglines"].every(p=>s.includes(p));return{data:r,fallbackFields:d?["$"]:s,...l.length>0?{warnings:l}:{}}}function Xn(){return O({name:"siteHero.v1",query:'*[_id == $id && _type == "siteHero"][0]{heading,intro,layout,taglines}',params:{id:"siteHero"},dependencies:{types:["siteHero"],ids:["siteHero"]},resolve:Cn})}0&&(module.exports={CONTENT_PAGES_QUERY,CONTENT_PAGE_BY_SLUG_QUERY,HEADING_LIST_LAYOUTS,HOME_PAGE_DOCUMENT_QUERY,MALFORMED_CONTENT,MalformedContentError,READER_ACTION_HREF,READER_GALLERY_PHOTO_LIMIT,READER_GALLERY_PHOTO_MIN,READER_HOME_PAGE_ID,READER_JUMP_LINK,READER_PHOTO_SLUG,READER_SECTION_KINDS,READER_SITE_SETTINGS_ID,READER_STORY_LAYOUTS,SECTION_LAYOUT_DEFAULTS,SECTION_WARNINGS,SITE_HERO_LAYOUTS,SITE_HERO_LAYOUT_WARNING,SITE_HERO_TAGLINES_DEFAULTED_WARNING,SITE_HERO_TAGLINE_DROPPED_WARNING,SITE_HERO_TAGLINE_MAX_LENGTH,SPLIT_LAYOUTS,STAGGER_ROW_LAYOUTS,campaignState,contentPageQuery,contentPagesQuery,createSiteContentReader,homeContentQuery,parseContentPage,parseHomePage,parseSiteHero,parseSiteSettings,portableTextToMarkdown,siteHeroQuery,siteSettingsQuery,validateSiteHeroTaglines});
11
+ `)}function vn(n,e,t){let o=Array.isArray(n.markDefs)?n.markDefs:[];if(!t.dense(o,`${e}.markDefs`))return{children:[],markDefs:[]};let i=[];o.forEach((s,a)=>{let c=t.object(s,`${e}.markDefs[${String(a)}]`);if(c!==null){if(c._type!=="link"||typeof c._key!="string"||typeof c.href!="string"){t.fail(`${e}.markDefs[${String(a)}]`,"is not a link annotation");return}i.push({key:c._key,href:c.href})}});let r=n.children;if(!Array.isArray(r)||!t.dense(r,`${e}.children`))return t.fail(`${e}.children`,"needs text spans"),{children:[],markDefs:i};let l=[];return r.forEach((s,a)=>{let c=`${e}.children[${String(a)}]`,u=t.object(s,c);if(u===null)return;if(u._type!=="span"||typeof u.text!="string"){t.fail(c,"is not a text span");return}let d=u.marks===void 0?[]:u.marks;if(!Array.isArray(d)||!t.dense(d,`${c}.marks`)||d.some(y=>typeof y!="string"||!["strong","em","code"].includes(y)&&!i.some(g=>g.key===y))){t.fail(`${c}.marks`,"contains an unsupported mark");return}l.push({text:u.text,marks:d})}),{children:l,markDefs:i}}function Oe(n,e,t){let o=[];return n.forEach((i,r)=>{let l=`${e}[${String(r)}]`,s=t.object(i,l);if(s===null)return;if(s._type==="portableTable"){o.push(xe(s,l,t));return}if(s._type!=="block"){t.fail(l,`is a ${JSON.stringify(s._type)}; only text is supported in rich text so far`);return}let a=s.style??"normal";if(a!=="normal"&&a!=="h2"&&a!=="h3"&&a!=="blockquote"){t.fail(`${l}.style`,`is ${JSON.stringify(a)}, which the schema does not offer`);return}let c=s.listItem,u=typeof s.level=="number"&&s.level>1?s.level:1;o.push({kind:"block",style:a,listItem:c==="bullet"||c==="number"?c:null,level:u,content:vn(s,l,t)})}),o}function xe(n,e,t){let o=n.rows;if(!Array.isArray(o)||o.length===0||!t.dense(o,`${e}.rows`))return t.fail(`${e}.rows`,"needs at least one row"),{kind:"table",rows:[]};let i=0,r=[];return o.forEach((l,s)=>{let a=`${e}.rows[${String(s)}]`,c=t.object(l,a);if(c===null)return;let u=c.cells;if(!Array.isArray(u)||u.length===0||!t.dense(u,`${a}.cells`)){t.fail(`${a}.cells`,"needs at least one cell");return}s===0&&(i=u.length),u.length!==i&&t.fail(`${a}.cells`,"has a different number of cells");let d=u.map((y,g)=>{let p=`${a}.cells[${String(g)}]`,f=typeof y=="string"?{children:[{text:y,marks:[]}],markDefs:[]}:(()=>{let m=t.object(y,p);return m===null?{children:[],markDefs:[]}:m._type!=="block"||m.style!==void 0&&m.style!=="normal"||m.listItem!==void 0?(t.fail(p,"is not an inline text block"),{children:[],markDefs:[]}):vn(m,p,t)})();return f.children.map(m=>m.text).join("").trim()===""&&t.fail(p,"is empty or not text"),f});r.push(d)}),{kind:"table",rows:r}}var Ne={strong:"**",em:"*",code:"`"};function Le(n,e,t){let o=new Map,i=Array.isArray(n.markDefs)?n.markDefs:[];if(!t.dense(i,`${e}.markDefs`))return"";for(let l of i){let s=l;s._type==="link"&&typeof s._key=="string"&&typeof s.href=="string"&&o.set(s._key,s.href)}let r=Array.isArray(n.children)?n.children:[];return t.dense(r,`${e}.children`)?r.map((l,s)=>{let a=l;if(a._type!=="span"||typeof a.text!="string")return t.fail(`${e}.children[${String(s)}]`,"is not a text span"),"";let c=a.text,u=Array.isArray(a.marks)?a.marks:[];if(!t.dense(u,`${e}.children[${String(s)}].marks`))return"";let d=null;for(let y of u){if(typeof y!="string")continue;let g=Ne[y];g!==void 0?c=`${g}${c}${g}`:o.has(y)?d=o.get(y)??null:t.fail(`${e}.children[${String(s)}].marks`,`names ${JSON.stringify(y)}, which is neither a style nor a link`)}return d===null?c:`[${c}](${d})`}).join(""):""}function Nn(n,e){if(typeof n!="object"||n===null)return"none";let t=n;if(t.enabled!==!0)return"off";let o=typeof t.startsAt=="string"?Date.parse(t.startsAt):null,i=typeof t.endsAt=="string"?Date.parse(t.endsAt):null;return o!==null&&e.getTime()<o?"not-started":i!==null&&e.getTime()>=i?"ended":"shown"}function Y(n,e,t){return typeof e._key=="string"?`${n}[_key=="${e._key}"]`:`${n}[${String(t)}]`}function dn(n,e){let t=new Z,o=t.object(n,"homePage");if(o===null)throw new I(F,t.problems);let i=typeof o._id=="string"?o._id:F;o._type!=="homePage"&&t.fail("_type",`is ${JSON.stringify(o._type)}, not homePage`);let r=null,l=o.hero===void 0?t.fail("hero","is missing"):t.object(o.hero,"hero");if(l!==null){let p=t.photos(l.photos,"hero.photos",2),f=o.heroSource??"homePage";f!=="homePage"&&f!=="siteHero"&&t.fail("heroSource","must be homePage or siteHero");let m=l.headline===void 0?null:t.requiredCopy(l.headline,"hero.headline");if(m===null&&l.headline===void 0&&f==="siteHero"){let ln=o._siteHero;if(ln!==null&&typeof ln=="object"&&!Array.isArray(ln)){let Dn=N.fields.find(ce=>ce.name==="heading");if(Dn===void 0)throw new TypeError("Missing siteHero heading definition");let Mn=nn({...N,fields:[Dn]},ln);Mn.ok&&(m=Mn.value.heading??null)}}m===null&&l.headline===void 0&&t.fail("hero.headline",f==="siteHero"?"is missing and siteHero.heading is missing or invalid":"is missing; write a headline or select siteHero with a published heading");let k=t.copy(l.subline,"hero.subline"),w=t.copy(l.lead,"hero.lead"),Ln=t.action(l.primaryAction,"hero.primaryAction"),x=t.action(l.secondaryAction,"hero.secondaryAction");m!==null&&(r={heading:m,subline:k,intro:w,image:p[0]??null,inset:p[1]??null,cta:Ln,secondaryCta:x})}let s=[],a=[],c="",u=Nn(o.campaign,e.now);if(u==="shown"){let p=t.object(o.campaign,"campaign");if(p!==null){let f=t.requiredCopy(p.title,"campaign.title"),m=t.photos(p.photos,"campaign.photos",3);m.length===0&&t.fail("campaign.photos","is empty; a shown campaign needs at least one photo");let k=yn(p.body,"campaign.body",t);un(k)===""&&t.fail("campaign.body","is empty; a shown campaign needs its text"),p.bodyCopySource==="proposed"&&t.proposed.push({where:"campaign.body",text:un(k)});let w=t.action(p.action,"campaign.action");w!==null&&a.push({where:"campaign.action.href",href:w.href}),f!==null&&(c=typeof k=="string"?`# ${K(f)}
12
+
13
+ ${k}`:[{kind:"heading",text:K(f)},...k]),s.push({kind:"campaign",action:w,images:m})}}let d=[],y=o.blocks??[];Array.isArray(y)?t.dense(y,"blocks")&&y.forEach((p,f)=>{let m=t.object(p,`blocks[${String(f)}]`);if(m===null)return;let k=Y("blocks",m,f),w=ee(m,k,t);w!==null&&(a.push(...ne(w,m,k)),w.kind==="locations"&&w.anchor!==null&&(d.includes(w.anchor)&&t.fail(`${k}.jumpLink`,`repeats "${w.anchor}", already used by another section`),d.push(w.anchor)),s.push(w))}):t.fail("blocks","is not a list");let g=[];r?.cta&&g.push({where:"hero.primaryAction.href",href:r.cta.href}),r?.secondaryCta&&g.push({where:"hero.secondaryAction.href",href:r.secondaryCta.href}),g.push(...a);for(let{where:p,href:f}of g)f.startsWith("#")&&!d.includes(f.slice(1))&&t.fail(p,`jumps to ${f}, which no section on the page is named`);if(t.problems.length>0)throw new I(i,t.problems);return{composition:{intro:null,photo:null,hero:r,blocks:s},body:c,campaign:u,proposedCopy:t.proposed}}function ne(n,e,t){switch(n.kind){case"feature_stories":{let o=Array.isArray(e.stories)?e.stories:[];return n.items.map((i,r)=>({where:`${Y(`${t}.stories`,o[r]??{},r)}.action.href`,href:i.action.href}))}case"accent_band":return n.action===null?[]:[{where:`${t}.action.href`,href:n.action.href}];case"cta":return[{where:`${t}.action.href`,href:n.link.href}];default:return[]}}function P(n,e,t){let o=n.jumpLink;return o==null||o===""?null:typeof o!="string"||!J.test(o)?t.fail(`${e}.jumpLink`,`is ${JSON.stringify(o)}, not lowercase words joined by hyphens`):o}function ee(n,e,t){switch(n._type){case"featureStoriesBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),i=t.copy(n.tail,`${e}.tail`),r=n.stories;if(!Array.isArray(r)||r.length===0)return t.fail(`${e}.stories`,"has no stories");if(!t.dense(r,`${e}.stories`))return null;let l=[];return r.forEach((s,a)=>{let c=t.object(s,`${e}.stories[${String(a)}]`);if(c===null)return;let u=Y(`${e}.stories`,c,a),d=t.requiredCopy(c.heading,`${u}.heading`),y=t.requiredCopy(c.body,`${u}.body`),g=t.requiredAction(c.action,`${u}.action`),p=t.photo(c.photo,`${u}.photo`),f=c.layout??"wide";if(!sn.includes(f)){t.fail(`${u}.layout`,`is ${JSON.stringify(f)}, not wide, tall, round or free`);return}let m=c.onCard??!1;if(typeof m!="boolean"){t.fail(`${u}.onCard`,"is not on or off");return}d===null||y===null||g===null||l.push({heading:d,body:y,action:g,image:p,shape:f,card:m})}),o===null?null:{kind:"feature_stories",heading:o,tail:i,items:l}}case"surfaceCardBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),i=t.copy(n.body,`${e}.body`),r=t.requiredAction(n.action,`${e}.action`),l=t.photo(n.photo,`${e}.photo`);return o===null||r===null?null:{kind:"cta",heading:K(o),body:i===null?null:K(i),link:{label:K(r.label),href:r.href},...n.photo===void 0?{}:{image:l}}}case"accentBandBlock":{let o=t.requiredCopy(n.heading,`${e}.heading`),i=t.copy(n.tail,`${e}.tail`),r=t.requiredCopy(n.body,`${e}.body`),l=t.action(n.action,`${e}.action`),s=t.photo(n.photo,`${e}.photo`);return o===null||r===null?null:{kind:"accent_band",heading:o,body:r,action:l,image:s,...n.tail===void 0?{}:{tail:i}}}case"locationsBlock":{let o=P(n,e,t),i=t.requiredCopy(n.heading,`${e}.heading`),r=t.copy(n.tail,`${e}.tail`),l=t.photo(n.photo,`${e}.photo`);return i===null?null:{kind:"locations",anchor:o,heading:i,tail:r,image:l}}default:return t.fail(`${e}._type`,`is ${JSON.stringify(n._type)}, not a section type this reader knows`)}}function H(n,e,t,o,i){let r=n.layout,l=t.find(s=>s===r);return l!==void 0?l:(i.push({code:A.layoutDefaulted,where:`${e}.layout`}),o)}function xn(n,e,t,o){if(n==null)return null;let i=t.object(n,e);if(i===null)return null;let r=i.asset,l=typeof r=="object"&&r!==null?r._ref:void 0;if(typeof l!="string"||l==="")return o.push({code:A.imageMissingAsset,where:`${e}.asset`}),null;let s=i.alt;if(typeof s!="string"||s.trim()==="")return o.push({code:A.imageMissingAlt,where:`${e}.alt`}),null;let a=t.optionalString(i.caption,`${e}.caption`),c=null;if(i.hotspot!==void 0&&i.hotspot!==null){let u=t.object(i.hotspot,`${e}.hotspot`),d=u?.x,y=u?.y;typeof d=="number"&&typeof y=="number"&&d>=0&&d<=1&&y>=0&&y<=1?c={x:d,y}:u!==null&&t.fail(`${e}.hotspot`,"is not a point inside the image")}return{asset:l,alt:s,caption:a,hotspot:c}}function De(n){return typeof n=="string"?n.slice(0,64).replace(/[^A-Za-z0-9_.-]/g,"?"):"?"}function Me(n,e,t,o){let i=(r,l,s,a)=>{if(!Array.isArray(r)||r.length<s||r.length>a||!t.dense(r,l))return t.fail(l,`needs ${String(s)} to ${String(a)} items`),[];let c=[];return r.forEach((u,d)=>{let y=t.object(u,`${l}[${String(d)}]`);if(y===null)return;let g=Y(l,y,d),p=t.requiredCopy(y.title,`${g}.title`),f=t.requiredCopy(y.body,`${g}.body`);p!==null&&f!==null&&c.push({title:p,body:f})}),c};switch(n._type){case"menuBlock":{let r=jn(n.menu,`${e}.menu`);if(r===null)return o.push({code:A.menuUnavailable,where:`${e}.menu`}),null;let l=H(n,e,X,an.layout,o),s=v.find(a=>a===n.decoration);return s===void 0&&o.push({code:A.layoutDefaulted,where:`${e}.decoration`}),{kind:"menu",menu:r,layout:l,decoration:s??an.decoration}}case"featureStoriesBlock":case"surfaceCardBlock":case"accentBandBlock":case"locationsBlock":{let r=ee(n,e,t);return r===null||r.kind==="campaign"?null:r}case"textMediaBlock":{let r=P(n,e,t),l=t.requiredCopy(n.heading,`${e}.heading`),s=t.copy(n.tail,`${e}.tail`),a=t.requiredCopy(n.body,`${e}.body`),c=t.action(n.action,`${e}.action`),u=xn(n.photo,`${e}.photo`,t,o),d=H(n,e,L,O.Split,o);return l===null||a===null?null:{kind:"text_media",anchor:r,layout:d,heading:l,tail:s,body:a,action:c,image:u}}case"faqBlock":{let r=P(n,e,t),l=t.copy(n.heading,`${e}.heading`),s=t.copy(n.tail,`${e}.tail`),a=t.copy(n.intro,`${e}.intro`),c=H(n,e,R,O.HeadingList,o),u=n.items;if(!Array.isArray(u)||u.length===0)return t.fail(`${e}.items`,"has no questions");if(!t.dense(u,`${e}.items`))return null;let d=[];return u.forEach((y,g)=>{let p=t.object(y,`${e}.items[${String(g)}]`);if(p===null)return;let f=Y(`${e}.items`,p,g);if(p._type!==void 0&&p._type!=="faqItem"){t.fail(`${f}._type`,`is ${JSON.stringify(p._type)}, not faqItem`);return}let m=t.requiredCopy(p.question,`${f}.question`),k=p.answer,w=typeof k=="object"&&k!==null&&!Array.isArray(k)?k:null,x=Array.isArray(k)||w!==null&&w.content!==void 0?{kind:"rich",body:yn(Array.isArray(k)?k:w?.content,Array.isArray(k)?`${f}.answer`:`${f}.answer.content`,t)}:typeof k=="string"?k:t.requiredCopy(k,`${f}.answer`);(x===""||typeof x=="object"&&x!==null&&"kind"in x&&un(x.body)==="")&&t.fail(`${f}.answer`,"is empty"),m!==null&&x!==null&&d.push({question:m,answer:x})}),{kind:"faq",anchor:r,layout:c,heading:l,tail:s,intro:a,items:d}}case"textItemsBlock":{let r=P(n,e,t),l=H(n,e,D,O.StaggerRow,o),s=i(n.items,`${e}.items`,2,4);return{kind:"text_items",anchor:r,layout:l,items:s}}case"stepsBlock":{let r=P(n,e,t),l=H(n,e,R,O.HeadingList,o),s=t.requiredCopy(n.heading,`${e}.heading`),a=t.requiredCopy(n.intro,`${e}.intro`),c=i(n.items,`${e}.items`,1,100);return s===null||a===null?null:{kind:"steps",anchor:r,layout:l,heading:s,intro:a,items:c}}case"linkListBlock":{let r=P(n,e,t),l=H(n,e,R,O.HeadingList,o),s=t.requiredCopy(n.heading,`${e}.heading`),a=t.copy(n.tail,`${e}.tail`),c=n.links;if(!Array.isArray(c)||c.length===0||!t.dense(c,`${e}.links`))return t.fail(`${e}.links`,"needs at least one page");let u=[];return c.forEach((d,y)=>{let g=t.object(d,`${e}.links[${String(y)}]`);if(g===null)return;let p=t.object(g.page,`${e}.links[${String(y)}].page`);if(p===null)return;let f=t.optionalString(p.title,`${e}.links[${String(y)}].page.title`),m=t.optionalString(p.slug,`${e}.links[${String(y)}].page.slug`);!f||!m||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(m)?t.fail(`${e}.links[${String(y)}].page`,"has no readable page title or slug"):u.push({title:f,href:`/pages/${m}/`})}),s===null?null:{kind:"link_list",anchor:r,layout:l,heading:s,tail:a,links:u}}case"galleryBlock":{let r=P(n,e,t),l=t.copy(n.heading,`${e}.heading`),s=H(n,e,D,O.StaggerRow,o),a=n.photos??[];if(!Array.isArray(a))return t.fail(`${e}.photos`,"is not a list of photos");if(!t.dense(a,`${e}.photos`))return null;if(a.length<en||a.length>tn)return t.fail(`${e}.photos`,`holds ${String(a.length)} photos; a gallery shows ${String(en)} to ${String(tn)}`);let c=a.flatMap((u,d)=>{let y=xn(u,Y(`${e}.photos`,typeof u=="object"&&u!==null?u:{},d),t,o);return y===null?[]:[y]});return c.length===0?(o.push({code:A.emptySkipped,where:e}),null):{kind:"gallery",anchor:r,layout:s,heading:l,images:c}}case"contactBlock":{let r=P(n,e,t),l=t.requiredCopy(n.heading,`${e}.heading`),s=t.copy(n.body,`${e}.body`),a=p=>{let f=n[p]??!0;return typeof f=="boolean"?f:(t.fail(`${e}.${p}`,"is not on or off"),!1)},c=a("showEmail"),u=a("showPhone"),d=t.action(n.action,`${e}.action`),y=xn(n.photo,`${e}.photo`,t,o),g=H(n,e,L,O.Split,o);return l===null?null:!c&&!u&&s===null&&d===null?(o.push({code:A.emptySkipped,where:e}),null):{kind:"contact",anchor:r,layout:g,heading:l,body:s,showEmail:c,showPhone:u,action:d,image:y}}default:return o.push({code:A.unknownType,where:`${e}._type`,type:De(n._type)}),null}}function He(n,e,t){switch(n.kind){case"text_media":case"contact":return n.action===null?[]:[{where:`${t}.action.href`,href:n.action.href}];case"menu":case"faq":case"gallery":case"text_items":case"steps":case"link_list":return[];default:return ne(n,e,t)}}function Pe(n,e){let t=[],o=[];if(!Array.isArray(n))return e.fail("sections","is not a list"),{sections:t,warnings:o};if(!e.dense(n,"sections"))return{sections:t,warnings:o};let i=[],r=[];n.forEach((l,s)=>{let a=e.object(l,`sections[${String(s)}]`);if(a===null)return;let c=Y("sections",a,s),u=Me(a,c,e,o);if(u===null)return;r.push(...He(u,a,c));let d="anchor"in u?u.anchor:null;d!==null&&(i.includes(d)&&e.fail(`${c}.jumpLink`,`repeats "${d}", already used by another section`),i.push(d)),t.push(u)});for(let{where:l,href:s}of r)s.startsWith("#")&&!i.includes(s.slice(1))&&e.fail(l,`jumps to ${s}, which no section on the page is named`);return{sections:t,warnings:o}}function V(n){let e=new Z,t=e.object(n,"page");if(t===null)throw new I("page",e.problems);let o=typeof t._id=="string"?t._id:"page";t._type!=="page"&&e.fail("_type",`is ${JSON.stringify(t._type)}, not page`);let i=e.optionalString(t.title,"title"),r=e.optionalString(t.titleTail,"titleTail");i===null&&e.fail("title","is missing"),t.titleCopySource==="proposed"&&i!==null&&e.proposed.push({where:"title",text:i});let l=t.slug,s=typeof l?.current=="string"&&l.current!==""?l.current:null;s===null&&e.fail("slug.current","is missing");let a=e.copy(t.lead,"lead"),c=e.photo(t.photo,"photo"),u=yn(t.body,"body",e);t.bodyCopySource==="proposed"&&e.proposed.push({where:"body",text:un(u)});let d=t.sections===void 0||t.sections===null?null:Pe(t.sections,e);if(e.problems.length>0||i===null||s===null)throw new I(o,e.problems);return{slug:s,title:i,...t.titleTail===void 0?{}:{titleTail:r??""},composition:{intro:a===null?null:K(a),photo:c,hero:null,blocks:[]},body:u,migrated:t.migrated===!0,proposedCopy:e.proposed,...d===null?{}:d}}function pn(n){let e=new Z,t=e.object(n,"siteSettings");if(t===null)throw new I(W,e.problems);let o=e.optionalString(t.title,"title");o===null&&e.fail("title","is missing; a site needs its name");let i=e.optionalString(t.description,"description"),r=t.contact===void 0?{}:e.object(t.contact,"contact")??{},l=e.optionalString(r.email,"contact.email"),s=e.optionalString(r.phone,"contact.phone"),a=[],c=t.social??[];if(Array.isArray(c)?e.dense(c,"social")&&c.forEach((u,d)=>{let y=e.object(u,`social[${String(d)}]`);if(y===null)return;let g=e.optionalString(y.network,`social[${String(d)}].network`),p=e.optionalString(y.url,`social[${String(d)}].url`);if(g===null||p===null||!/^https?:\/\//.test(p)){e.fail(`social[${String(d)}]`,"needs a network and a web address");return}a.push({network:g,url:p})}):e.fail("social","is not a list"),e.problems.length>0||o===null)throw new I(W,e.problems);return{name:o,description:i,contact:{email:l,phone:s},social:a}}var fn="*[_id == $id][0]",te='*[_id == $id][0]{..., "_siteHero": *[_id == "siteHero" && _type == "siteHero"][0]{heading}}',oe=`{..., "sections": coalesce(sections[]{..., _type == "menuBlock" => {menu->{${Hn}}}, _type == "linkListBlock" => {links[]{..., "page": page->{title, "slug": slug.current}}}}, sections)}`,gn=`*[_type == "page" && defined(slug.current)]|order(slug.current asc)${oe}`,mn=`*[_type == "page" && slug.current == $slug][0]${oe}`;function re(n){return{home:async({now:e})=>{let t=await n.query(te,{params:{id:F}});return t==null?null:dn(t,{now:e})},pages:async()=>{let e=await n.query(gn);if(!Array.isArray(e))throw new I("page",["the page query did not return a list"]);if(!h(e))throw new I("page",["the page query contains missing entries"]);return e.map(t=>V(t))},pageBySlug:async e=>{let t=await n.query(mn,{params:{slug:e}});return t==null?null:V(t)},siteSettings:async()=>{let e=await n.query(fn,{params:{id:W}});return e==null?null:pn(e)}}}function hn(n,e,t,o){if(!o(e))throw new TypeError("Invalid CMS content fallback");return n==null?{data:e,fallbackFields:["$"]}:{data:t(n),fallbackFields:[]}}function ie(n){if(!(n instanceof Date)||!Number.isFinite(n.getTime()))throw new TypeError("Invalid CMS campaign date");let e=n.getTime();return j({name:"homePage.v1",query:te,params:{id:F},dependencies:{types:["homePage","siteHero"],ids:[F,"siteHero"]},resolve:(t,o)=>hn(t,o,i=>dn(i,{now:new Date(e)}),Zn)})}function se(n){if(typeof n!="string"||n==="")throw new TypeError("Invalid CMS page slug");return j({name:"page.v1",query:mn,params:{slug:n},dependencies:{types:["page","menu"]},resolve:(e,t)=>hn(e,t,V,On)})}function le(){return j({name:"pages.v1",query:gn,params:{},dependencies:{types:["page","menu"]},resolve:(n,e)=>hn(n,e,t=>{if(!Array.isArray(t))throw new I("page",["the page query did not return a list"]);if(!h(t))throw new I("page",["the page query contains missing entries"]);return t.map(o=>V(o))},t=>h(t)&&t.every(o=>o!==null&&On(o)))})}function ae(){return j({name:"siteSettings.v1",query:fn,params:{id:W},dependencies:{types:["siteSettings"],ids:[W]},resolve:(n,e)=>hn(n,e,pn,Vn)})}0&&(module.exports={CONTENT_PAGES_QUERY,CONTENT_PAGE_BY_SLUG_QUERY,HEADING_LIST_LAYOUTS,HOME_PAGE_DOCUMENT_QUERY,MALFORMED_CONTENT,MalformedContentError,READER_ACTION_HREF,READER_GALLERY_PHOTO_LIMIT,READER_GALLERY_PHOTO_MIN,READER_HOME_PAGE_ID,READER_JUMP_LINK,READER_PHOTO_SLUG,READER_SECTION_KINDS,READER_SITE_SETTINGS_ID,READER_STORY_LAYOUTS,SECTION_LAYOUT_DEFAULTS,SECTION_WARNINGS,SITE_HERO_LAYOUTS,SITE_HERO_LAYOUT_WARNING,SITE_HERO_TAGLINES_DEFAULTED_WARNING,SITE_HERO_TAGLINE_DROPPED_WARNING,SITE_HERO_TAGLINE_MAX_LENGTH,SPLIT_LAYOUTS,STAGGER_ROW_LAYOUTS,campaignState,contentPageQuery,contentPagesQuery,createSiteContentReader,homeContentQuery,parseContentPage,parseHomePage,parseSiteHero,parseSiteSettings,portableTextToMarkdown,siteHeroQuery,siteSettingsQuery,validateSiteHeroTaglines});
11
14
  //# sourceMappingURL=site-content.cjs.map