{"version":3,"file":"component---src-pages-projects-gcn-tsx-806481686d4d19d0b7b9.js","mappings":"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","sources":["webpack://axon-division/./src/content/images/gcn/gcn-responsive-animation-poster.png","webpack://axon-division/./src/content/images/gcn/gcn-responsive-animation.mp4","webpack://axon-division/./src/content/images/gcn/gcn-responsive-animation.webmsd.webm","webpack://axon-division/./src/components/GCNResponsiveDesignVideo/GCNResponsiveDesignVideo.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/pages/projects/gcn.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/content/projects/gcn.project.ts","webpack://axon-division/./src/utils/image.utils.ts","webpack://axon-division/./src/components/NativeVideoWrapper/NativeVideoWrapper.tsx"],"sourcesContent":["export default __webpack_public_path__ + \"static/gcn-responsive-animation-poster-25e764510a2ab16501646c2cbad26646.png\";","export default __webpack_public_path__ + \"static/gcn-responsive-animation-66292278aa0b21504457888ad9e41f51.mp4\";","export default __webpack_public_path__ + \"static/gcn-responsive-animation.webmsd-bcb012d210f246aa7302246d206ea892.webm\";","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport videoPoster from '../../content/images/gcn/gcn-responsive-animation-poster.png';\n// import './GCNResponsiveDesignVideo.scss';\nimport videoMp4 from '../../content/images/gcn/gcn-responsive-animation.mp4';\nimport videoWebm from '../../content/images/gcn/gcn-responsive-animation.webmsd.webm';\nimport NativeVideoWrapper from '../NativeVideoWrapper/NativeVideoWrapper';\n\ntype GCNResponsiveDesignVideoProps = {\n rounded?: boolean,\n}\n\nconst GCNResponsiveDesignVideo: React.FC = props => {\n return (\n \n )} />\n}\n\nexport default GCNResponsiveDesignVideo;","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 { graphql, useStaticQuery } from \"gatsby\";\nimport React from 'react';\nimport GatsbyImageAdaptor from \"../../components/GatsbyImageAdaptor/GatsbyImageAdaptor\";\nimport GCNResponsiveDesignVideo from \"../../components/GCNResponsiveDesignVideo/GCNResponsiveDesignVideo\";\nimport ProjectPage from '../../components/ProjectPage/ProjectPage';\nimport SimpleEntryGallery from \"../../components/SimpleEntryGallery/SimpleEntryGallery\";\nimport Spacer from \"../../components/Spacer/Spacer\";\n// import './ProjectPageGCN.scss';\nimport { useGCNInfo } from '../../content/projects/gcn.project';\nimport { PageComponent } from '../../types/gatsby.types';\nimport { GcnAwardBadgeQuery } from \"../../types/generated\";\n\ntype ProjectPageGCNProps = {}\n\nconst ProjectPageGCN: PageComponent = props => {\n const metaInfo = useGCNInfo();\n const GCNAwardBadge: GcnAwardBadgeQuery = useStaticQuery(graphql`\n query GCNAwardBadge {\n file(relativePath: {eq: \"images/gcn/gcn-magazines-ireland-ima-2017-award-badge.png\"}) {\n childImageSharp {\n gatsbyImageData\n }\n }\n }`\n )\n return \n }\n >\n \n \n \n \n}\n\nexport default ProjectPageGCN;","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 { 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 { GcnImagesQuery } from \"../../types/generated\";\n\nexport const ProjectMetaInfoGCN: ProjectMetaInfo = {\n name: \"gcn\",\n displayName: \"GCN\",\n abbreviation: \"GCN\",\n subtitle: \"Gay Community News Ireland\",\n description: \"As one of the major LGBT news magazine in Ireland, GCN celebrated their 30th birthday on 2017 with an exciting new brand identity. We are proud to have been entrusted with the complete redesign and development of their website, gcn.ie.\",\n yearStart: 2017,\n categories: [\n Category.websites,\n ],\n sectors: [\n Sector.lgbtq,\n Sector.newsAndMedia,\n ],\n url: \"https://gcn.ie/\",\n hasPage: true,\n theme: {\n backgroundImageOpacity: .6\n },\n keywords: [\n 'GCN',\n 'web design',\n 'web development',\n 'WordPress',\n 'Responsive web designs',\n 'News website design',\n 'Gay',\n 'Lesbian',\n 'LGBT',\n 'LGBTQ+',\n 'Ireland',\n 'Gay Community News Ireland',\n 'Irish Magazines Award 2017', \n ],\n}\nexport const useGCNInfo = () => {\n const GCNImages: GcnImagesQuery = useStaticQuery(graphql`\n query GCNImages {\n featuredImage: file(relativePath: {eq: \"images/gcn/lgbtq-pride-people-waving-flag.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/gcn/gallery\"}\n }\n ) {\n edges {\n node {\n name\n childImageSharp {\n gatsbyImageData(width: 2560, height: 1440)\n }\n }\n }\n }\n mobileScreenshots: allFile(\n sort: {fields: name},\n filter: {\n extension: {regex: \"/(jpg)|(jpeg)|(png)/\"},\n relativeDirectory: {eq: \"images/gcn/mobile-screenshots\"}\n }\n ) {\n edges {\n node {\n name\n childImageSharp {\n gatsbyImageData(\n width: 238\n )\n }\n }\n }\n }\n }`\n )\n const imageMetaData: Partial[] = [\n {\n title: 'GCN Homepage Screenshot',\n alt: 'GCN Homepage Screenshot, desktop version',\n },\n ]\n const info: ProjectMetaInfoWithQueriedResources = {\n ...ProjectMetaInfoGCN,\n featuredImage: {\n image: GCNImages.featuredImage?.childImageSharp,\n alt: 'People Waving LGBTQ+ Flag',\n title: 'GCN Project Featured Image',\n },\n gallery: GCNImages.gallery.edges.map((edge, i) => ({\n image: edge.node.childImageSharp?.gatsbyImageData,\n ...imageMetaData[i]\n })),\n // TODO: provide better title / alt values,\n mobileScreenshots: GCNImages.mobileScreenshots.edges.map((edge, i) => ({\n image: edge.node.childImageSharp,\n title: edge.node.name,\n alt: edge.node.name,\n }))\n }\n return info;\n}","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;"],"names":["props","_jsx","Observer","children","NativeVideoWrapper","id","className","src","videoWebm","videoMp4","poster","videoPoster","width","height","onlyLoadWhenVisible","rounded","_props$image","_props$title","_props$image2","_ref","_props$alt","_props$image3","image","getImage","GatsbyImage","_objectSpread","title","alt","backgroundColor","disableSmoothScrollTemporarily","async","isBuildTime","document","documentElement","style","scrollBehavior","tick","key","project","name","useOnMount","pageHeadingGroupRef","useObservableRef","useAnimateTextEnterByLine","animateTextEnter","delay","_props$project$pageBa","_jsxs","PageTemplate","joinClassName","displayName","description","keywords","entryMeta","backgroundImage","pageBackgroundImage","featuredImage","TricolorMorphDef","PageSection","as","ref","Widowless","subtitle","StandardTextBlock","url","ProjectURLButton","ribbons","sidebarExtraContent","metaInfo","useGCNInfo","GCNAwardBadge","useStaticQuery","ProjectPage","GatsbyImageAdaptor","file","childImageSharp","SimpleEntryGallery","entry","autoAddMobileSlides","Spacer","size","GCNResponsiveDesignVideo","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","range","length","map","i","React","doNotRenderContainer","isNumber","mobileSlidesPosition","splice","AppScreenshotSlider","_Fragment","_props$drawLine","UI","useAppContext","CTAButton","to","rel","target","drawLine","viewport","ProjectMetaInfoGCN","abbreviation","yearStart","categories","Category","websites","sectors","Sector","lgbtq","newsAndMedia","hasPage","theme","backgroundImageOpacity","_GCNImages$featuredIm","GCNImages","imageMetaData","edges","edge","_edge$node$childImage","node","gatsbyImageData","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"],"sourceRoot":""}