{"version":3,"file":"component---src-pages-projects-urgent-animation-tsx-362b7e5c0053f525c2cc.js","mappings":"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","sources":["webpack://axon-division/./src/components/YouTubeEmbed/YouTubeEmbed.tsx","webpack://axon-division/./src/pages/projects/urgent-animation.tsx","webpack://axon-division/./src/constants/hashtags.constants.ts","webpack://axon-division/./src/content/projects/urgent-animation.project.ts","webpack://axon-division/./src/utils/css.utils.ts","webpack://axon-division/./src/components/ProjectPage/ProjectPage.tsx","webpack://axon-division/./src/constants/categories.constants.ts","webpack://axon-division/./src/components/StandardTextBlock/StandardTextBlock.tsx","webpack://axon-division/./src/components/ProjectURLButton/ProjectURLButton.tsx","webpack://axon-division/./src/utils/typography.utils.ts","webpack://axon-division/./src/components/Widowless/Widowless.tsx","webpack://axon-division/./src/constants/sectors.constants.ts","webpack://axon-division/./src/hooks/useAnimateTextEnterByLine.hook.ts"],"sourcesContent":["import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { isIE } from '../../utils/browsers.utils';\nimport './YouTubeEmbed.scss';\n\ntype YouTubeEmbedProps = {\n src: string,\n title: string,\n}\n\nconst YouTubeEmbed: React.FC = props => {\n const { UI } = useAppContext();\n return (\n
\n \n
\n )} />\n}\n\nexport default YouTubeEmbed;","import React from 'react';\nimport CTAButton from '../../components/CTAButton/CTAButton';\nimport ProjectPage from '../../components/ProjectPage/ProjectPage';\nimport YouTubeEmbed from '../../components/YouTubeEmbed/YouTubeEmbed';\n// import { useAAAIDPAnimationInfo } from '../../content/projects/aaa-idp-animation.project';\n// import { useTBMAnimationInfo } from '../../content/projects/tbm-animation.project';\nimport { useUrgentAnimationInfo } from '../../content/projects/urgent-animation.project';\nimport { PageComponent } from '../../types/gatsby.types';\n// import './ProjectPageJimOCallaghan.scss';\n\ntype ProjectPageUrgentAnimationProps = {}\n\nconst ProjectPageUrgentAnimation: PageComponent = props => {\n const metaInfo = useUrgentAnimationInfo();\n return Watch on YouTube\n }\n >\n \n \n}\n\nexport default ProjectPageUrgentAnimation;","export enum Hashtag {\n 'branding' = 'branding',\n 'digitalDesign' = 'digitalDesign',\n 'printDesign' = 'printDesign',\n 'animations' = 'animations',\n}\n\nexport const DesignHashtags = [\n Hashtag.digitalDesign,\n Hashtag.animations,\n Hashtag.branding,\n Hashtag.printDesign,\n]","import { graphql, useStaticQuery } from \"gatsby\";\nimport { Category } from \"../../constants/categories.constants\";\nimport { Hashtag } from \"../../constants/hashtags.constants\";\nimport { Sector } from \"../../constants/sectors.constants\";\nimport { ProjectMetaInfo, ProjectMetaInfoWithQueriedResources } from \"../../types/app.types\";\nimport { AaaidpAnimationImagesQuery } from \"../../types/generated\";\n\nexport const ProjectMetaInfoUrgentAnimation: ProjectMetaInfo = {\n name: \"urgent-animation\",\n displayName: \"Urgent Animation\",\n abbreviation: \"Urgent Animation\",\n subtitle: \"Animation produced for Urgent.ie\",\n // TODO\n description: \"Animation produced for Urgent.ie.\",\n categories: [\n Category.design,\n ],\n sectors: [\n Sector.eCommerceAndRetail,\n ],\n hashtags: [\n Hashtag.animations,\n ],\n hasPage: true,\n keywords: [\n 'Urgent.ie',\n 'animation design',\n 'advertisement design',\n 'motion graphics',\n ],\n}\nexport const useUrgentAnimationInfo = () => {\n const UrgentAnimationImages: UrgentAnimationImagesQuery = useStaticQuery(graphql`\n query UrgentAnimationImages {\n featuredImage: file(relativePath: {eq: \"images/urgent-animation/urgent-animation-featured-image.png\"}) {\n childImageSharp {\n gatsbyImageData(width: 1280, height: 720)\n }\n }\n pageBackgroundImage: file(relativePath: {eq: \"images/urgent-animation/urgent-animation-background.png\"}) {\n childImageSharp {\n gatsbyImageData(width: 1280, height: 720)\n }\n }\n }\n `)\n const info: ProjectMetaInfoWithQueriedResources = {\n ...ProjectMetaInfoUrgentAnimation,\n featuredImage: {\n image: UrgentAnimationImages.featuredImage!.childImageSharp,\n title: 'Urgent Video Preview',\n alt: 'Urgent Video Preview Image',\n },\n pageBackgroundImage: {\n image: UrgentAnimationImages.pageBackgroundImage!.childImageSharp,\n title: 'Urgent Video Preview',\n alt: 'Urgent Video Preview Image',\n },\n }\n return info;\n}","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;","export enum Category {\n 'apps' = 'apps',\n 'websites' = 'websites',\n 'design' = 'design',\n}\n","import React from 'react';\nimport { AnimateTextEnterByLineProps, useAnimateTextEnterByLine } from '../../hooks/useAnimateTextEnterByLine.hook';\nimport { useObservableRef } from '../../hooks/useObservableRef.hook';\nimport joinClassName from '../../utils/className.utils';\nimport './StandardTextBlock.scss';\n\ntype StandardTextBlockProps = AnimateTextEnterByLineProps & {\n className?: string\n}\n\nconst StandardTextBlock: React.FC = props => {\n const ref = useObservableRef();\n useAnimateTextEnterByLine(ref, props);\n return
\n {props.children}\n
\n}\n\nexport default StandardTextBlock;","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;","const widowPreventerRegex = /\\s(?=[^\\s]*$)/g;\n\nexport const preventWidows = (s: string) => s.replace(widowPreventerRegex, '\\u00A0');","import React from 'react';\nimport { preventWidows } from '../../utils/typography.utils';\n\ntype WidowlessProps = {\n as?: keyof HTMLElementTagNameMap,\n className?: string,\n children: string,\n onClick?: React.MouseEventHandler,\n}\n\nconst Widowless: React.FC = props => React.createElement(\n props.as ?? 'p', {\n ...props,\n children: preventWidows(props.children)\n }\n)\n\nexport default Widowless;","export enum Sector {\n 'all' = 'all',\n // 'agriculture' = 'agriculture',\n // 'aviation' = 'aviation',\n // 'construction' = 'construction',\n 'eCommerceAndRetail' = 'eCommerceAndRetail',\n 'eLearning' = 'eLearning',\n 'energy' = 'energy',\n 'entertainmentAndEvents' = 'entertainmentAndEvents',\n 'finance' = 'finance',\n 'governmentAndNPO' = 'governmentAndNPO',\n 'healthAndFitness' = 'healthAndFitness',\n 'lgbtq' = 'lgbtq',\n 'motorsports' = 'motorsports',\n 'musicAndAudio' = 'musicAndAudio',\n 'newsAndMedia' = 'newsAndMedia',\n 'tourism' = 'tourism',\n}\n\nexport const sectorsPreferredOrder = [\n Sector.all,\n Sector.healthAndFitness,\n Sector.eCommerceAndRetail,\n Sector.governmentAndNPO,\n Sector.finance,\n Sector.motorsports,\n Sector.tourism,\n Sector.entertainmentAndEvents,\n Sector.eLearning,\n Sector.musicAndAudio,\n Sector.lgbtq,\n // Sector.aviation,\n // Sector.construction,\n // Sector.agriculture,\n Sector.energy,\n Sector.newsAndMedia,\n]\n\nexport type SectorDefinition = {\n name: string,\n abbreviation?: string,\n slug: string,\n}\n\nexport const sectorDefinitions: Record = {\n [Sector.all]: { name: 'All Sectors', slug: 'all' },\n // [Sector.agriculture]: { name: 'Agriculture', slug: 'agriculture' },\n // [Sector.aviation]: { name: 'Aviation', slug: 'aviation' },\n // [Sector.construction]: { name: 'Construction', slug: 'construction' },\n [Sector.eCommerceAndRetail]: { name: 'eCommerce & Retail', slug: 'ecommerce-and-retail' },\n [Sector.eLearning]: { name: 'eLearning', slug: 'elearning' },\n [Sector.energy]: { name: 'Energy', slug: 'energy' },\n [Sector.entertainmentAndEvents]: { name: 'Entertainment & Events', slug: 'entertainment-and-events' },\n [Sector.finance]: { name: 'Finance', slug: 'finance' },\n [Sector.governmentAndNPO]: { name: 'Government & NPO', abbreviation: 'Gov & NPO', slug: 'government-and-npo' },\n [Sector.healthAndFitness]: { name: 'Health & Fitness', slug: 'health-and-fitness' },\n [Sector.lgbtq]: { name: 'LGBTQ+', slug: 'lgbtq' },\n [Sector.motorsports]: { name: 'Motorsports', slug: 'motorsports' },\n [Sector.musicAndAudio]: { name: 'Music & Audio', slug: 'music-and-audio' },\n [Sector.newsAndMedia]: { name: 'News & Media', slug: 'news-and-media' },\n [Sector.tourism]: { name: 'Tourism', slug: 'tourism' },\n}\n\nexport const isSectorEnum = (s: string): s is Sector => s in Sector;\n\nexport const getSectorName = (s?: Sometimes) => {\n if (!s) return undefined;\n if (isSectorEnum(s)) return sectorDefinitions[s].name;\n const [sector, def] = Object.entries(sectorDefinitions).find(([key, value]) => value.slug === s || value.name === s || value.abbreviation === s) || [];\n return def?.name;\n}\nexport const getSectorFromSlug = (s?: Sometimes) => {\n const [sector, def] = Object.entries(sectorDefinitions).find(([key, value]) => value.slug === s) || [];\n return sector as Sector | undefined;\n}","import { Expo, TweenMax } from 'gsap';\nimport { SplitText } from 'gsap/SplitText';\nimport { when } from \"mobx\";\nimport { PageSectionContext, usePageSectionContext } from \"../components/PageSection/PageSection\";\nimport { useAppContext } from '../controllers/app.controller';\nimport { isBrowser, isProduction } from \"../env\";\nimport { makeDisposerController } from \"../utils/disposer.utils\";\nimport { waitForFontsToLoad } from \"../utils/fonts.utils\";\nimport { log } from '../utils/loggers.utils';\nimport { highPerf } from '../utils/performance.utils';\nimport { isObject } from \"../utils/typeChecks.utils\";\nimport tick from \"../utils/waiters.utils\";\nimport { useOnMount } from \"./lifecycle.hooks\";\nimport { ObservableRef } from \"./useObservableRef.hook\";\n\nexport type AnimateTextEnterByLineProps = {\n animateTextEnter?: {\n delay?: number,\n onlyWhenParentSectionVisible?: boolean,\n } | true,\n}\n\nexport const useAnimateTextEnterByLine = (\n ref: ObservableRef, \n props: AnimateTextEnterByLineProps,\n context?: PageSectionContext,\n) => {\n const { UI } = useAppContext();\n const autoContext = usePageSectionContext();\n const pageSection = context ?? autoContext;\n useOnMount(() => {\n if (isProduction && UI.isFirstLoad) return;\n if (!highPerf) return;\n const d = makeDisposerController();\n const animateIn = async () => {\n if (isBrowser) {\n await waitForFontsToLoad();\n if (!ref.current) return;\n const spiltText = new SplitText(ref.current.children, { type: 'lines' });\n TweenMax.set(spiltText.lines, { opacity: 0 });\n if (isObject(props.animateTextEnter)) {\n if (props.animateTextEnter.delay) {\n await tick(props.animateTextEnter.delay);\n }\n if (props.animateTextEnter.onlyWhenParentSectionVisible) {\n await when(() => pageSection.visible);\n log('visible now', pageSection.id);\n }\n }\n if (!ref.current) return;\n const styles = getComputedStyle(ref.current);\n const YOffset = parseInt(styles.fontSize ?? 64) * 1;\n TweenMax.fromTo(spiltText.lines!, .62, {\n opacity: 0,\n y: YOffset,\n }, {\n opacity: 1,\n y: 0,\n ease: Expo.easeOut,\n stagger: .05,\n onComplete: () => spiltText.revert()\n });\n }\n }\n if (props.animateTextEnter) animateIn();\n return d.disposer\n })\n}"],"names":["props","UI","useAppContext","_jsx","Observer","children","className","src","title","frameBorder","allow","allowFullScreen","width","isIE","Math","min","viewport","undefined","height","round","metaInfo","useUrgentAnimationInfo","ProjectPage","_objectSpread","project","sidebarExtraContent","CTAButton","to","target","ribbons","drawLine","YouTubeEmbed","Hashtag","DesignHashtags","digitalDesign","animations","branding","printDesign","ProjectMetaInfoUrgentAnimation","name","displayName","abbreviation","subtitle","description","categories","Category","design","sectors","Sector","eCommerceAndRetail","hashtags","hasPage","keywords","UrgentAnimationImages","useStaticQuery","featuredImage","image","childImageSharp","alt","pageBackgroundImage","disableSmoothScrollTemporarily","async","isBuildTime","document","documentElement","style","scrollBehavior","tick","key","useOnMount","pageHeadingGroupRef","useObservableRef","useAnimateTextEnterByLine","animateTextEnter","delay","_props$project$pageBa","_jsxs","PageTemplate","joinClassName","entryMeta","backgroundImage","TricolorMorphDef","PageSection","id","as","ref","Widowless","StandardTextBlock","url","ProjectURLButton","_props$drawLine","rel","widowPreventerRegex","_props$as","s","React","replace","sectorsPreferredOrder","all","healthAndFitness","governmentAndNPO","finance","motorsports","tourism","entertainmentAndEvents","eLearning","musicAndAudio","lgbtq","energy","newsAndMedia","sectorDefinitions","slug","getSectorName","isSectorEnum","sector","def","Object","entries","find","_ref","value","getSectorFromSlug","_ref2","context","autoContext","usePageSectionContext","pageSection","isProduction","isFirstLoad","highPerf","d","makeDisposerController","isBrowser","_styles$fontSize","waitForFontsToLoad","current","spiltText","SplitText","type","TweenMax","set","lines","opacity","isObject","onlyWhenParentSectionVisible","when","visible","log","styles","getComputedStyle","YOffset","parseInt","fontSize","fromTo","y","ease","Expo","easeOut","stagger","onComplete","revert","animateIn","disposer"],"sourceRoot":""}