{"version":3,"file":"component---src-pages-projects-celtic-woodland-yoga-festival-tsx-d808112bfe0f757b3733.js","mappings":"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","sources":["webpack://axon-division/./src/content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop-poster.jpg","webpack://axon-division/./src/content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop-sd.webm","webpack://axon-division/./src/content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop.mp4","webpack://axon-division/./src/pages/projects/celtic-woodland-yoga-festival.tsx","webpack://axon-division/./src/components/GatsbyImageAdaptor/GatsbyImageAdaptor.tsx","webpack://axon-division/./src/utils/css.utils.ts","webpack://axon-division/./src/components/ProjectPage/ProjectPage.tsx","webpack://axon-division/./src/components/Spacer/Spacer.tsx","webpack://axon-division/./src/components/SimpleEntryGallery/SimpleEntryGallery.tsx","webpack://axon-division/./src/components/ProjectURLButton/ProjectURLButton.tsx","webpack://axon-division/./src/utils/image.utils.ts","webpack://axon-division/./src/components/NativeVideoWrapper/NativeVideoWrapper.tsx","webpack://axon-division/./src/content/projects/celtic-woodland-yoga-festival.project.ts"],"sourcesContent":["export default __webpack_public_path__ + \"static/celtic-woodland-yoga-festival-homepage-video-loop-poster-4f3aaad265841eccf25aea6b199e2a81.jpg\";","export default __webpack_public_path__ + \"static/celtic-woodland-yoga-festival-homepage-video-loop-sd-3dca1ed2e531646bf5876906011c327c.webm\";","export default __webpack_public_path__ + \"static/celtic-woodland-yoga-festival-homepage-video-loop-7066cab39a0fe7ff87d26b034a3deffe.mp4\";","import React from 'react';\nimport NativeVideoWrapper from '../../components/NativeVideoWrapper/NativeVideoWrapper';\nimport ProjectPage from '../../components/ProjectPage/ProjectPage';\nimport SimpleEntryGallery from '../../components/SimpleEntryGallery/SimpleEntryGallery';\nimport Spacer from '../../components/Spacer/Spacer';\nimport videoPoster from '../../content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop-poster.jpg';\n// import './ProjectPageCelticWoodlandYogaFestival.scss';\nimport videoWebmSD from '../../content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop-sd.webm';\nimport videoMp4 from '../../content/images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-homepage-video-loop.mp4';\nimport { useCelticWoodlandYogaFestivalInfo } from '../../content/projects/celtic-woodland-yoga-festival.project';\nimport { PageComponent } from '../../types/gatsby.types';\n\ntype ProjectPageCelticWoodlandYogaFestivalProps = {}\n\nconst ProjectPageCelticWoodlandYogaFestival: PageComponent = props => {\n const metaInfo = useCelticWoodlandYogaFestivalInfo();\n return \n \n \n \n \n}\n\nexport default ProjectPageCelticWoodlandYogaFestival;","import { GatsbyImage, GatsbyImageProps, getImage } from 'gatsby-plugin-image';\nimport React from 'react';\nimport { ImageWithMetaInfo } from '../../types/app.types';\nimport { ImageDataLike } from '../../types/gatsby.types';\n\ntype GatsbyImageAdaptorProps = {\n image: ImageWithMetaInfo | ImageDataLike,\n id?: string,\n title?: string,\n alt?: string,\n className?: string,\n objectFit?: GatsbyImageProps['objectFit'],\n objectPosition?: GatsbyImageProps['objectPosition'],\n backgroundColor?: string,\n}\n\n/**\n * A little adaptor component that automatically applies the getImage method for graphQL image query results.\n * It also accepts title/alt overrides.\n */\nconst GatsbyImageAdaptor: React.FC = props => {\n const image = props.image ? getImage(('image' in props.image || 'title' in props.image || 'alt' in props.image) ? props.image?.image : props.image) : null;\n return image ? : null;\n}\n\nexport default GatsbyImageAdaptor;","import { isBuildTime } from \"../env\";\nimport tick from \"./waiters.utils\";\n\nexport const getFontSize = (element?: HTMLElement, fallback: number = 16) => {\n if (isBuildTime) return fallback;\n return parseFloat(getComputedStyle(element ?? document.body).fontSize);\n}\n\nexport const disableSmoothScroll = () => {\n if (isBuildTime) return;\n document.documentElement.style.scrollBehavior = 'auto';\n return enableSmoothScroll;\n}\n\nexport const enableSmoothScroll = () => {\n if (isBuildTime) return;\n document.documentElement.style.scrollBehavior = 'smooth';\n}\n\nexport const disableSmoothScrollTemporarily = async () => {\n if (isBuildTime) return;\n document.documentElement.style.scrollBehavior = 'auto';\n await tick();\n document.documentElement.style.scrollBehavior = 'smooth';\n}","import { Observer } from 'mobx-react-lite';\nimport React, { ReactElement } from 'react';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { useAnimateTextEnterByLine } from '../../hooks/useAnimateTextEnterByLine.hook';\nimport { useObservableRef } from '../../hooks/useObservableRef.hook';\nimport { ProjectMetaInfoWithQueriedResources } from '../../types/app.types';\nimport { PageComponent } from '../../types/gatsby.types';\nimport joinClassName from '../../utils/className.utils';\nimport { disableSmoothScrollTemporarily } from '../../utils/css.utils';\nimport PageSection from '../PageSection/PageSection';\nimport PageTemplate from '../PageTemplate/PageTemplate';\nimport ProjectURLButton from '../ProjectURLButton/ProjectURLButton';\nimport StandardTextBlock from '../StandardTextBlock/StandardTextBlock';\nimport TricolorMorphDef from '../TricolorMorphDef/TricolorMorphDef';\nimport Widowless from '../Widowless/Widowless';\nimport './ProjectPage.scss';\n\ntype ProjectPageProps = {\n project: ProjectMetaInfoWithQueriedResources,\n sidebarExtraContent?: ReactElement,\n}\n\nconst ProjectPage: PageComponent = props => {\n const key = `ProjectPage--${props.project.name}`;\n useOnMount(disableSmoothScrollTemporarily);\n const pageHeadingGroupRef = useObservableRef();\n useAnimateTextEnterByLine(pageHeadingGroupRef, { \n animateTextEnter: { delay: 100 }\n });\n return (\n \n \n \n\n \n\n
\n {props.children}\n
\n\n \n \n )} />\n}\n\nexport default ProjectPage;","import React from 'react';\nimport { isStandardSize, Size } from '../../constants/sizes.constants';\nimport './Spacer.scss';\n\ntype SpacerProps = {\n size?: Size | string | number,\n inline?: boolean,\n}\n\nconst Spacer: React.FC = props => {\n const { size = '1em' } = props;\n const isCustomValue = typeof props.size === 'number' || !isStandardSize(size);\n const style = {\n display: props.inline ? 'inline-block' : undefined,\n width: isCustomValue ? size : undefined,\n height: isCustomValue ? size : undefined,\n }\n return
\n}\n\nexport default Spacer;","import React, { ReactNode } from 'react';\nimport { EntryMetaInfoWithQueriedResources } from '../../types/app.types';\nimport joinClassName from '../../utils/className.utils';\nimport { isNumber } from '../../utils/typeChecks.utils';\nimport AppScreenshotSlider from '../AppScreenshotSlider/AppScreenshotSlider';\nimport GatsbyImageAdaptor from '../GatsbyImageAdaptor/GatsbyImageAdaptor';\nimport './SimpleEntryGallery.scss';\n\ntype SimpleEntryGalleryProps = {\n className?: string,\n entry: EntryMetaInfoWithQueriedResources,\n range?: [number, number],\n doNotRenderContainer?: boolean,\n autoAddMobileSlides?: boolean,\n mobileSlidesPosition?: number,\n}\n\nconst SimpleEntryGallery: React.FC = props => {\n const mobileScreenshots = props.entry.mobileScreenshots;\n const slides: ReactNode[] = (props.entry.gallery ?? []).slice(props.range?.[0] ?? 0, props.range?.[1] ?? (props.entry.gallery?.length ?? 0)).map((entry, i) => React.createElement(\n props.doNotRenderContainer ? 'div' : 'li',\n { \n key: i,\n className: \"SimpleEntryGalleryItem\",\n children: \n }\n ));\n if (mobileScreenshots && (props.autoAddMobileSlides || isNumber(props.mobileSlidesPosition))) slides.splice(props.mobileSlidesPosition ?? 1, 0, )\n if (props.doNotRenderContainer) return <>{slides}\n return
    \n { slides }\n
\n}\n\nexport default SimpleEntryGallery;","import React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { ProjectMetaInfo } from '../../types/app.types';\nimport joinClassName from '../../utils/className.utils';\nimport CTAButton, { CTAButtonProps } from '../CTAButton/CTAButton';\n// import './ProjectURLButton.scss';\n\ntype ProjectURLButtonProps = Omit & {\n project: ProjectMetaInfo,\n drawLine?: 'left' | 'right' | false,\n}\n\nconst ProjectURLButton: React.FC = props => {\n const { UI } = useAppContext();\n return 768 ? 'left' : 'right'))}\n >Visit Site\n}\n\nexport default ProjectURLButton;","import { isBuildTime } from \"../env\";\n\nfunction checkIfBrowserSupportsWebp() {\n if (isBuildTime) return true;\n const canvas = document.createElement('canvas');\n if (!!(canvas.getContext && canvas.getContext('2d'))) {\n // was able or not to get WebP representation\n return canvas.toDataURL('image/webp').indexOf('data:image/webp') == 0;\n }\n else {\n // very old browser like IE 8, canvas not supported\n return false;\n }\n}\nexport const supportsWebp = checkIfBrowserSupportsWebp();","import { action } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { isBuildTime } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { useObservableRef } from '../../hooks/useObservableRef.hook';\nimport joinClassName from '../../utils/className.utils';\nimport { makeDisposerController } from '../../utils/disposer.utils';\nimport { supportsWebp } from '../../utils/image.utils';\nimport { useStore } from '../../utils/mobx.utils';\nimport { isArray } from '../../utils/typeChecks.utils';\nimport { observeVisibility } from '../../utils/visibilityObserver.util';\nimport './NativeVideoWrapper.scss';\n\ntype NativeVideoWrapperProps = {\n id: string,\n className?: string,\n loop?: boolean,\n muted?: boolean,\n poster?: string,\n posterWebp?: string,\n autoPlay?: boolean,\n controls?: boolean,\n preload?: HTMLVideoElement['preload'],\n playsInline?: boolean,\n width?: number,\n height?: number,\n src?: string | string[],\n onlyLoadWhenVisible?: boolean,\n rounded?: boolean,\n}\n\nconst NativeVideoWrapper: React.FC = props => {\n const ref = useObservableRef();\n const videoRef = useObservableRef();\n // const p = useProps(props);\n const s = useStore(() => ({\n src: props.onlyLoadWhenVisible ? [''] : isArray(props.src) ? props.src : [props.src],\n }))\n useOnMount(() => {\n if (isBuildTime) return;\n const d = makeDisposerController();\n const setSrcAndPlay = action(() => {\n s.src = isArray(props.src) ? props.src : [props.src];\n videoRef?.current?.play();\n })\n d.add(observeVisibility(ref, {\n id: props.id,\n onBecomeVisible: setSrcAndPlay,\n onBecomeInvisible: () => {\n videoRef?.current?.pause();\n }\n }))\n if (!props.onlyLoadWhenVisible) { \n setSrcAndPlay();\n }\n return d.disposer;\n })\n return (\n \n \n
\n )} />\n}\n\nexport default NativeVideoWrapper;","import { graphql, useStaticQuery } from \"gatsby\";\nimport { Category } from \"../../constants/categories.constants\";\nimport { Sector } from \"../../constants/sectors.constants\";\nimport { ImageWithMetaInfo, ProjectMetaInfo, ProjectMetaInfoWithQueriedResources } from \"../../types/app.types\";\nimport { CelticWoodlandYogaFestivalImagesQuery } from \"../../types/generated\";\n\nexport const ProjectMetaInfoCelticWoodlandYogaFestival: ProjectMetaInfo = {\n name: \"celtic-woodland-yoga-festival\",\n displayName: \"Celtic Woodland Yoga Festival\",\n abbreviation: \"CWYF\",\n subtitle: \"Website Design & Build Project\",\n description: \"The Celtic Woodland Yoga festival is dedicated to broad-mindedness, diversity and conscious exploration, and aims to grow this yoga into the future as a living, breathing spiritual art form. The platform was first developed to host its first virtual yoga festival in 2020.\",\n categories: [\n Category.websites,\n ],\n sectors: [\n Sector.healthAndFitness,\n Sector.entertainmentAndEvents,\n ],\n url: \"https://celticwoodlandyogafestival.com/\",\n hasPage: true,\n keywords: [\n 'Celtic Woodland Yoga Festival',\n 'web design',\n 'web development',\n 'Yoga',\n 'Yoga Festival',\n 'live event streaming',\n 'WordPress',\n 'events',\n ],\n}\nexport const useCelticWoodlandYogaFestivalInfo = () => {\n const CelticWoodlandYogaFestivalImages: CelticWoodlandYogaFestivalImagesQuery = useStaticQuery(graphql`\n query CelticWoodlandYogaFestivalImages {\n featuredImage: file(relativePath: {eq: \"images/celtic-woodland-yoga-festival/celtic-woodland-yoga-festival-library-class.jpg\"}) {\n childImageSharp {\n gatsbyImageData(width: 1280, height: 720)\n }\n }\n gallery: allFile(\n sort: {fields: name},\n filter: {\n extension: {regex: \"/(jpg)|(jpeg)|(png)/\"},\n relativeDirectory: {eq: \"images/celtic-woodland-yoga-festival/gallery\"}\n }\n ) {\n edges {\n node {\n name\n childImageSharp {\n gatsbyImageData(width: 2560, height: 1440)\n }\n }\n }\n }\n }\n `)\n const imageMetaData: Partial[] = [\n {\n title: 'Celtic Woodland Yoga Festival Homepage Screenshot',\n alt: 'Celtic Woodland Yoga Festival Homepage Screenshot, desktop version',\n },\n ]\n const info: ProjectMetaInfoWithQueriedResources = {\n ...ProjectMetaInfoCelticWoodlandYogaFestival,\n featuredImage: {\n image: CelticWoodlandYogaFestivalImages.featuredImage!.childImageSharp,\n title: 'Celtic Woodland Yoga Festival',\n alt: 'Yogis having a group class in Townley Hall during Celtic Woodland Yoga Festival 2019',\n },\n gallery: CelticWoodlandYogaFestivalImages.gallery.edges.map((edge, i) => ({\n image: edge.node.childImageSharp?.gatsbyImageData,\n ...imageMetaData[i]\n }))\n }\n return info;\n}"],"names":["props","metaInfo","useCelticWoodlandYogaFestivalInfo","_jsxs","ProjectPage","_objectSpread","project","children","_jsx","NativeVideoWrapper","id","className","src","videoWebmSD","videoMp4","poster","videoPoster","width","height","onlyLoadWhenVisible","rounded","Spacer","size","SimpleEntryGallery","entry","autoAddMobileSlides","range","Infinity","_props$image","_props$title","_props$image2","_ref","_props$alt","_props$image3","image","getImage","GatsbyImage","title","alt","backgroundColor","disableSmoothScrollTemporarily","async","isBuildTime","document","documentElement","style","scrollBehavior","tick","key","name","useOnMount","pageHeadingGroupRef","useObservableRef","useAnimateTextEnterByLine","animateTextEnter","delay","Observer","_props$project$pageBa","PageTemplate","joinClassName","displayName","description","keywords","entryMeta","backgroundImage","pageBackgroundImage","featuredImage","TricolorMorphDef","PageSection","as","ref","Widowless","subtitle","StandardTextBlock","url","ProjectURLButton","ribbons","sidebarExtraContent","isCustomValue","isStandardSize","display","inline","undefined","_props$entry$gallery","_props$range$","_props$range","_props$range$2","_props$range2","_props$entry$gallery$","_props$entry$gallery2","_props$mobileSlidesPo","mobileScreenshots","slides","gallery","slice","length","map","i","React","doNotRenderContainer","GatsbyImageAdaptor","isNumber","mobileSlidesPosition","splice","AppScreenshotSlider","_Fragment","_props$drawLine","UI","useAppContext","CTAButton","to","rel","target","drawLine","viewport","supportsWebp","canvas","createElement","getContext","toDataURL","indexOf","checkIfBrowserSupportsWebp","videoRef","s","useStore","isArray","d","makeDisposerController","setSrcAndPlay","action","_videoRef$current","current","play","add","observeVisibility","onBecomeVisible","onBecomeInvisible","_videoRef$current2","pause","disposer","_props$loop","_props$muted","_props$preload","_props$autoPlay","_props$controls","_props$playsInline","loop","muted","posterWebp","preload","autoPlay","controls","playsInline","srcString","ProjectMetaInfoCelticWoodlandYogaFestival","abbreviation","categories","Category","websites","sectors","Sector","healthAndFitness","entertainmentAndEvents","hasPage","CelticWoodlandYogaFestivalImages","useStaticQuery","imageMetaData","childImageSharp","edges","edge","_edge$node$childImage","node","gatsbyImageData"],"sourceRoot":""}