{"version":3,"file":"component---src-pages-projects-turn-2-me-tsx-674ecb07dee0c10a8f78.js","mappings":"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","sources":["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/content/projects/turn2me.project.ts","webpack://axon-division/./src/components/SimpleEntryGallery/SimpleEntryGallery.tsx","webpack://axon-division/./src/pages/projects/turn2me.tsx","webpack://axon-division/./src/components/ProjectURLButton/ProjectURLButton.tsx"],"sourcesContent":["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 { Category } from \"../../constants/categories.constants\";\nimport { Sector } from \"../../constants/sectors.constants\";\nimport { EntryMetaInfoWithQueriedResources, ImageWithMetaInfo, ProjectMetaInfo } from \"../../types/app.types\";\nimport { Turn2meImagesQuery } from \"../../types/generated\";\n\nexport const ProjectMetaInfoTurn2me: ProjectMetaInfo = {\n name: \"turn2me\",\n displayName: \"turn2me.ie\",\n abbreviation: \"turn2me\",\n subtitle: \"Leading Irish Mental Health Online Service\",\n description: \"We assist turn2me.ie in delivering professional, inclusive and confidential counselling services to people in need in this unprecedented global crisis. As of April 30, 2021, a total of 22,811 new users joined turn2me.ie since the beginning of 2020, a significant surge for the mental health service, and the counselling hours has increased by 386%.\",\n categories: [\n Category.apps,\n Category.websites,\n ],\n sectors: [\n Sector.healthAndFitness,\n ],\n url: \"https://turn2me.ie/\",\n hasPage: true,\n keywords: [\n 'turn2me',\n 'mental health platform',\n 'app development',\n 'web design',\n 'HSE',\n 'online counselling platform',\n ],\n theme: {\n backgroundColor: '#009FE3',\n foregroundColor: '#ffffff',\n backgroundImageOpacity: 1,\n primaryColor: '#ffffff',\n }\n // entryRenderer: Turn2meAppScreenshotSlider\n}\nexport const useTurn2meInfo = () => {\n const Turn2meImages: Turn2meImagesQuery = useStaticQuery(graphql`\n query Turn2meImages {\n featuredImage: file(relativePath: {eq: \"images/turn2me/turn2me-featured-image-speech-bubble-background.png\"}) {\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/turn2me/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/turn2me/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: \"turn2me Homepage Screenshot\",\n alt: \"turn2me Homepage Screenshot, desktop version\",\n },\n ]\n const info: EntryMetaInfoWithQueriedResources = {\n ...ProjectMetaInfoTurn2me,\n featuredImage: {\n image: Turn2meImages.featuredImage!.childImageSharp,\n title: 'turn2me Homepage',\n alt: 'turn2me Homepage Design'\n },\n gallery: Turn2meImages.gallery.edges.map((edge, i) => ({\n image: edge.node.childImageSharp?.gatsbyImageData,\n ...imageMetaData[i]\n })),\n // TODO: provide better title / alt values,\n mobileScreenshots: Turn2meImages.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 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 ProjectPage from '../../components/ProjectPage/ProjectPage';\nimport SimpleEntryGallery from '../../components/SimpleEntryGallery/SimpleEntryGallery';\nimport { useTurn2meInfo } from '../../content/projects/turn2me.project';\nimport { PageComponent } from '../../types/gatsby.types';\n// import './ProjectPageTurn2me.scss';\n\ntype ProjectPageTurn2meProps = {}\n\nconst ProjectPageTurn2me: PageComponent = props => {\n const metaInfo = useTurn2meInfo();\n return \n \n \n}\n\nexport default ProjectPageTurn2me;","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;"],"names":["props","_props$image","_props$title","_props$image2","_ref","_props$alt","_props$image3","image","getImage","_jsx","GatsbyImage","_objectSpread","id","title","alt","backgroundColor","disableSmoothScrollTemporarily","async","isBuildTime","document","documentElement","style","scrollBehavior","tick","key","project","name","useOnMount","pageHeadingGroupRef","useObservableRef","useAnimateTextEnterByLine","animateTextEnter","delay","Observer","children","_props$project$pageBa","_jsxs","PageTemplate","className","joinClassName","displayName","description","keywords","entryMeta","backgroundImage","pageBackgroundImage","featuredImage","TricolorMorphDef","PageSection","as","ref","Widowless","subtitle","StandardTextBlock","url","ProjectURLButton","ribbons","sidebarExtraContent","ProjectMetaInfoTurn2me","abbreviation","categories","Category","apps","websites","sectors","Sector","healthAndFitness","hasPage","theme","foregroundColor","backgroundImageOpacity","primaryColor","useTurn2meInfo","Turn2meImages","useStaticQuery","imageMetaData","childImageSharp","gallery","edges","map","edge","i","_edge$node$childImage","node","gatsbyImageData","mobileScreenshots","_props$entry$gallery","_props$range$","_props$range","_props$range$2","_props$range2","_props$entry$gallery$","_props$entry$gallery2","_props$mobileSlidesPo","entry","slides","slice","range","length","React","doNotRenderContainer","GatsbyImageAdaptor","autoAddMobileSlides","isNumber","mobileSlidesPosition","splice","AppScreenshotSlider","_Fragment","metaInfo","ProjectPage","SimpleEntryGallery","_props$drawLine","UI","useAppContext","CTAButton","to","rel","target","drawLine","undefined","viewport","width"],"sourceRoot":""}