{"version":3,"sources":["webpack:///./src/components/Hero/Hero.module.css","webpack:///./src/icons/upwards-arrow.svg","webpack:///./src/components/Hero/Hero.js","webpack:///./src/components/Form/Form.js","webpack:///./src/components/Location/Location.js","webpack:///./src/components/ContactPageForm/ContactPageForm.js","webpack:///./src/components/ContactPanel/ContactPanel.js","webpack:///./src/templates/contact/index.js","webpack:///./node_modules/react-intersection-observer/react-intersection-observer.m.js","webpack:///./src/components/global/SectionHeading/SectionHeading.js","webpack:///./src/types/index.js","webpack:///./src/components/Seo/Seo.js","webpack:///./src/hooks/useConstant.js"],"names":["module","exports","React","UpwardsArrow","props","createElement","defaultProps","default","Hero","subheading","heading","background_video_desktop","background_type","background_image","background_image_small","hero_background_image","ref","useRef","location","useLocation","background_image_mobile","className","classNames","stylesheet","videoContainer","preload","loop","autoPlay","muted","playsInline","src","source_url","Image","style","height","width","position","pathname","opacity","Link","to","onClick","e","preventDefault","nextNode","document","getElementById","top","getBoundingClientRect","window","scroll","behavior","IconWrapper","label","icon","Arrow","Form","form_name","form_id","form_height","form_name_cleaned","replace","iframe","useState","minHeight","setStyle","onLoad","useCallback","onMessage","event","origin","data","setTimeout","useEffect","frame","current","addEventListener","removeEventListener","id","title","scrolling","seamless","marginHeight","marginWidth","frameBorder","horizontalscrolling","verticalscrolling","memo","Location","addresss","email","map_link","region","phone","emailAdd","toLowerCase","SectionHeading","size","dangerouslySetInnerHTML","__html","href","Button","as","target","rel","ContactPageForm","locations","map","wordpress_id","acf","contact","key","Row","children","Heading","Content","ContactPanel","alt","loading","query","ContactPage","media","pageContext","nodes","page","blocks","yoast","featured_media","hero","useConstant","cleanProps","find","block","type","image","_extends","Object","assign","i","arguments","length","source","prototype","hasOwnProperty","call","apply","this","ObserverMap","Map","RootIds","rootId","optionsToId","options","keys","filter","Boolean","sort","root","has","set","toString","get","observe","element","callback","_createObserver","instance","elements","observer","IntersectionObserver","entries","forEach","entry","_elements$get","inView","isIntersecting","thresholds","some","threshold","intersectionRatio","trackVisibility","isVisible","createObserver","callbacks","push","splice","indexOf","unobserve","disconnect","isPlainChildren","InView","_React$Component","subClass","superClass","_this","node","_unobserveCb","handleNode","triggerOnce","skip","setState","initialInView","undefined","observeNode","handleChange","onChange","state","create","constructor","__proto__","_proto","componentDidUpdate","prevProps","rootMargin","delay","componentWillUnmount","_this$props","render","_this$state","_this$props2","tag","excluded","sourceKeys","_objectWithoutPropertiesLoose","useInView","_temp","_ref","_React$useState","setRef","Array","isArray","result","displayName","variants","open","x","transition","duration","closed","animate","rest","shouldAnimate","Node","includes","span","shape","string","isRequired","content","number","arrayOf","attrs","name","oneOfType","object","featured_image_url","department","categories","url","category","path","prev","bool","next","Seo","canonical","twitter_title","twitter_image","twitter_description","opengraph_title","opengraph_image","opengraph_description","metadesc","meta_robots_noindex","meta_robots_nofollow","twitterImage","opengraphImage","property","fn","v"],"mappings":"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","file":"component---src-templates-contact-index-js-4b9cae424c2f17613a45.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoContainer\":\"Hero-module--videoContainer--3XJYL\",\"opacity\":\"Hero-module--opacity--1reaK\"};","var React = require('react');\n\nfunction UpwardsArrow (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"fillRule\":\"evenodd\",\"strokeWidth\":\"2\",\"transform\":\"rotate(-90 26 25)\"},[React.createElement(\"circle\",{\"cx\":\"25\",\"cy\":\"25\",\"r\":\"25\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M20.935 11.565L34.37 25 20.935 38.435\",\"key\":1})]));\n}\n\nUpwardsArrow.defaultProps = {\"viewBox\":\"0 0 52 52\"};\n\nmodule.exports = UpwardsArrow;\n\nUpwardsArrow.default = UpwardsArrow;\n","/* eslint-disable react/prop-types */\nimport React, { useRef } from 'react'\nimport { string } from 'prop-types'\nimport classNames from 'classnames'\nimport { useLocation } from \"@reach/router\"\n// import useMediaQuery from '@/hooks/useMediaQuery'\nimport Image from '@/utils/Image'\nimport Link from '@/utils/Link'\nimport IconWrapper from '@/utils/IconWrapper'\nimport Arrow from '@/icons/upwards-arrow.svg'\nimport stylesheet from './Hero.module.css';\n\nfunction Hero({\n\tsubheading,\n\theading,\n\tbackground_video_desktop,\n\tbackground_type,\n\tbackground_image,\n\tbackground_image_small,\n\thero_background_image\n}) {\n\tconst ref = useRef()\n\tconst location = useLocation()\n\n\tconst onClick = e => {\n\t\te.preventDefault()\n\n\t\tconst nextNode = document.getElementById('_row_1_')\n\t\tif (nextNode) {\n\t\t\tconst { top } = nextNode.getBoundingClientRect()\n\n\t\t\twindow.scroll({\n\t\t\t\ttop: top - 40,\n\t\t\t\tbehavior: 'smooth'\n\t\t\t})\n\t\t}\n\t}\n\n\t// protect against missing content in CMS\n\tconst background_image_mobile = background_image_small || hero_background_image || background_image\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{ background_video_desktop && (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t) }\n\t\t\t\t{ background_type === 'Image' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t) }\n\t\t\t\t{/* {this.props.image ? this.props.image : null} */ }\n\t\t\t\t{ location.pathname === \"/\" &&
}\n\t\t\t\t
\n\t\t\t\t\t

\n\t\t\t\t\t\t{ heading }\n\t\t\t\t\t

\n\t\t\t\t\t{ subheading && (\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{ subheading }\n\t\t\t\t\t\t

\n\t\t\t\t\t) }\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nHero.propTypes = {\n\tsubHeading: string,\n\theading: string,\n\t// background_video_desktop: object,\n\tbackground_type: string\n}\n\nexport default Hero\n","import React, { useEffect, useRef, useState, useCallback, memo } from 'react'\nimport { string } from 'prop-types'\n\nfunction Form({\n\tform_name = 'Contact Form',\n\tform_id = 'https://www2.ultraleap.com/l/727963/2019-09-18/25v4s',\n\tform_height\n}) {\n\tconst height = form_height || 230\n\tconst form_name_cleaned = form_name.replace(/\\s/g, '')\n\tconst iframe = useRef()\n\tconst [style, setStyle] = useState({ minHeight: +height })\n\n\tconst onLoad = useCallback(() => {\n\t\tsetStyle({ minHeight: +height })\n\t}, [])\n\n\tconst onMessage = useCallback(event => {\n\t\tif (event.origin === 'https://www2.ultraleap.com' && event.data === 50) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetStyle({ height: 230 })\n\t\t\t})\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst frame = iframe.current\n\t\tif (window) {\n\t\t\tframe.addEventListener('load', onLoad)\n\t\t\twindow.addEventListener('message', onMessage)\n\t\t}\n\n\t\treturn () => {\n\t\t\tframe.removeEventListener('load', onLoad)\n\t\t\twindow.removeEventListener('message', onMessage)\n\t\t}\n\t}, [onLoad, onMessage])\n\n\treturn (\n\t\t\n\t)\n}\n\nForm.propTypes = {\n\tform_name: string,\n\tform_id: string\n}\n\nexport default memo(Form)\n","/* eslint-disable react/no-danger */\nimport React from 'react'\nimport { string } from 'prop-types'\nimport SectionHeading from '@/components/global/SectionHeading'\nimport Button from '@/components/global/Button'\n\nfunction Location({ addresss, email, map_link, region = 'UK', phone }) {\n\tconst emailAdd = email.toLowerCase()\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{region}\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{phone}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{emailAdd}\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tGet Directions\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nLocation.propTypes = {\n\taddresss: string.isRequired,\n\temail: string.isRequired,\n\tmap_link: string.isRequired,\n\tphone: string.isRequired,\n\tregion: string.isRequired\n}\n\nexport default Location\n","/* eslint-disable react/prop-types */\nimport React from 'react'\nimport Location from '@/components/Location'\nimport Form from '@/components/Form'\n\nfunction ContactPageForm({ locations }) {\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tWhether you’re looking to bring your next great idea to life or\n\t\t\t\t\t\t\tinterested in finding out more about Ultraleap, we’re here to\n\t\t\t\t\t\t\thelp.\n\t\t\t\t\t\t

\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{locations.map(\n\t\t\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\t\t\twordpress_id,\n\t\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\t\tacf: {\n\t\t\t\t\t\t\t\t\t\t\tcontact: { email, map_link, phone, addresss }\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\tBy contacting us, you are agreeing to our{' '}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tprivacy policy\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\n// ContactPageForm.propTypes = {\n// \tclassName: string\n// }\n\nexport default ContactPageForm\n","import React from 'react'\nimport { string } from 'prop-types'\nimport classNames from 'classnames'\nimport Button from '@/components/global/Button'\nimport Link from '@/utils/Link'\n\nfunction Row({ children }) {\n\treturn
{children}
\n}\n\nfunction Heading({ children }) {\n\treturn

{children}

\n}\n\nfunction Content({ children, ...props }) {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n\nfunction ContactPanel({ className }) {\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tSales\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tEvaluating our products and services and need advice? Get in touch\n\t\t\t\t\t\t\twith our sales team to see how we can work together.\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tCareer\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tWant to look at our current job listings? Search our latest roles\n\t\t\t\t\t\t\tand submit your application.\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tPress\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAre you interested in our latest news or working on an Ultraleap\n\t\t\t\t\t\t\tstory and need to get in touch? Visit our press page to download\n\t\t\t\t\t\t\tour brand pack including logos and product shots, or to get in\n\t\t\t\t\t\t\ttouch.\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSupport\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAlready using our products and experiencing technical issues? Find\n\t\t\t\t\t\t\thelpful resources on our developer sites, or raise a support\n\t\t\t\t\t\t\tticket and our team will get back to you.\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tHand Tracking\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nContactPanel.propTypes = {\n\tclassName: string\n}\n\nexport default ContactPanel\n","/* eslint-disable react/prop-types */\nimport React from 'react'\nimport { shape } from 'prop-types'\nimport { graphql } from 'gatsby'\nimport SEO from '@/components/Seo'\nimport { Hero } from '@/components/Hero'\nimport ContactPageForm from '@/components/ContactPageForm'\nimport ContactPanel from '@/components/ContactPanel'\nimport { cleanProps } from '@/utils'\nimport useConstant from '@/hooks/useConstant'\n/* eslint-disable no-unused-vars */\nimport { pageQuery } from '@/queries'\n/* eslint-enable no-unused-vars */\nimport * as T from '@/types'\n\nfunction ContactPage({\n\tpageContext: { media },\n\tdata: {\n\t\tlocations: { nodes: locations },\n\t\tpage: { blocks, yoast, featured_media }\n\t}\n}) {\n\tconst data = useConstant(() => cleanProps(blocks, media))\n\n\tconst hero = data.find(block => block.type === 'acf/hero')\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\n\t)\n}\n\nContactPage.propTypes = {\n\tpageContext: T.pageContext.isRequired,\n\tdata: shape({\n\t\tpage: T.page.isRequired\n\t})\n}\n\nexport const query = graphql`\n\tquery ContactUsQuery($path: String!) {\n\t\tpage: wordpressPage(path: { eq: $path }) {\n\t\t\t...pageQuery\n\t\t}\n\n\t\tlocations: allWordpressWpLocations {\n\t\t\tnodes {\n\t\t\t\ttitle\n\t\t\t\twordpress_id\n\t\t\t\tacf {\n\t\t\t\t\tcontact {\n\t\t\t\t\t\tphone\n\t\t\t\t\t\tmap_link\n\t\t\t\t\t\temail\n\t\t\t\t\t\taddresss\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`\n\nexport default ContactPage\n","import { createElement, Component, useRef, useState, useCallback, useEffect } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar ObserverMap = new Map();\nvar RootIds = new Map();\nvar rootId = 0;\n/**\r\n * Generate a unique ID for the root element\r\n * @param root\r\n */\n\nfunction getRootId(root) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n/**\r\n * Convert the options to a string Id, based on the values.\r\n * Ensures we can reuse the same observer when observing elements with the same options.\r\n * @param options\r\n */\n\n\nfunction optionsToId(options) {\n return Object.keys(options).filter(Boolean).sort().map(function (key) {\n return key + \"_\" + (key === 'root' ? getRootId(options.root) : options[key]);\n }).toString();\n}\n\nfunction createObserver(options) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n var id = optionsToId(options);\n var instance = ObserverMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n var elements = new Map();\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var _elements$get; // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n\n\n var inView = entry.isIntersecting && observer.thresholds.some(function (threshold) {\n return entry.intersectionRatio >= threshold;\n }); // @ts-ignore support IntersectionObserver v2\n\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n (_elements$get = elements.get(entry.target)) == null ? void 0 : _elements$get.forEach(function (callback) {\n callback(inView, entry);\n });\n });\n }, options);\n instance = {\n id: id,\n observer: observer,\n elements: elements\n };\n ObserverMap.set(id, instance);\n }\n\n return instance;\n}\n\nfunction observe(element, callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!element) return function () {}; // An observer with the same options can be reused, so lets use this fact\n\n var _createObserver = createObserver(options),\n id = _createObserver.id,\n observer = _createObserver.observer,\n elements = _createObserver.elements; // Register the callback listener for this element\n\n\n var callbacks = elements.get(element) || [];\n\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements[\"delete\"](element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n ObserverMap[\"delete\"](id);\n }\n };\n}\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\r\n * Monitors scroll, and triggers the children function with updated props\r\n */\n\n\nvar InView = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InView, _React$Component);\n\n function InView(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.node = null;\n _this._unobserveCb = null;\n\n _this.handleNode = function (node) {\n if (_this.node) {\n // Clear the old observer, before we start observing a new element\n _this.unobserve();\n\n if (!node && !_this.props.triggerOnce && !_this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n _this.setState({\n inView: !!_this.props.initialInView,\n entry: undefined\n });\n }\n }\n\n _this.node = node ? node : null;\n\n _this.observeNode();\n };\n\n _this.handleChange = function (inView, entry) {\n if (inView && _this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n _this.unobserve();\n }\n\n if (!isPlainChildren(_this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n _this.setState({\n inView: inView,\n entry: entry\n });\n }\n\n if (_this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n _this.props.onChange(inView, entry);\n }\n };\n\n _this.state = {\n inView: !!props.initialInView,\n entry: undefined\n };\n return _this;\n }\n\n var _proto = InView.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unobserve();\n this.node = null;\n };\n\n _proto.observeNode = function observeNode() {\n if (!this.node || this.props.skip) return;\n var _this$props = this.props,\n threshold = _this$props.threshold,\n root = _this$props.root,\n rootMargin = _this$props.rootMargin,\n trackVisibility = _this$props.trackVisibility,\n delay = _this$props.delay;\n this._unobserveCb = observe(this.node, this.handleChange, {\n threshold: threshold,\n root: root,\n rootMargin: rootMargin,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n });\n };\n\n _proto.unobserve = function unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n\n this._unobserveCb = null;\n }\n };\n\n _proto.render = function render() {\n if (!isPlainChildren(this.props)) {\n var _this$state = this.state,\n inView = _this$state.inView,\n entry = _this$state.entry;\n return this.props.children({\n inView: inView,\n entry: entry,\n ref: this.handleNode\n });\n }\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n as = _this$props2.as,\n tag = _this$props2.tag,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"as\", \"tag\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\", \"onChange\", \"skip\", \"trackVisibility\", \"delay\", \"initialInView\"]);\n\n return /*#__PURE__*/createElement(as || tag || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n };\n\n return InView;\n}(Component);\n\nInView.displayName = 'InView';\nInView.defaultProps = {\n threshold: 0,\n triggerOnce: false,\n initialInView: false\n};\n\nfunction useInView(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n threshold = _ref.threshold,\n delay = _ref.delay,\n trackVisibility = _ref.trackVisibility,\n rootMargin = _ref.rootMargin,\n root = _ref.root,\n triggerOnce = _ref.triggerOnce,\n skip = _ref.skip,\n initialInView = _ref.initialInView;\n\n var unobserve = useRef();\n\n var _React$useState = useState({\n inView: !!initialInView\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var setRef = useCallback(function (node) {\n if (unobserve.current !== undefined) {\n unobserve.current();\n unobserve.current = undefined;\n } // Skip creating the observer\n\n\n if (skip) return;\n\n if (node) {\n unobserve.current = observe(node, function (inView, entry) {\n setState({\n inView: inView,\n entry: entry\n });\n\n if (entry.isIntersecting && triggerOnce && unobserve.current) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve.current();\n unobserve.current = undefined;\n }\n }, {\n root: root,\n rootMargin: rootMargin,\n threshold: threshold,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n });\n }\n }, // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [// If the threshold is an array, convert it to a string so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold, root, rootMargin, triggerOnce, skip, trackVisibility, delay]);\n /* eslint-disable-next-line */\n\n useEffect(function () {\n if (!unobserve.current && state.entry && !triggerOnce && !skip) {\n // If we don't have a ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n setState({\n inView: !!initialInView\n });\n }\n });\n var result = [setRef, state.inView, state.entry]; // Support object destructuring, by adding the specific values.\n\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\nexport default InView;\nexport { InView, useInView };","import React from 'react'\nimport { string, node, bool, number } from 'prop-types'\nimport { motion } from 'framer-motion'\nimport classNames from 'classnames'\nimport { useInView } from 'react-intersection-observer'\nimport Node from '@/utils/Node'\n\nconst variants = {\n\topen: { x: 0, transition: { duration: 0.5 } },\n\tclosed: { x: '-100%' }\n}\n\nfunction SectionHeading({\n\tas = 'h3',\n\tchildren,\n\tclassName = 'mb-12 text-sm text-white',\n\tanimate = false,\n\tthreshold = 0,\n\trootMargin = '-20px',\n\tsize = 'w-20 lg:w-32',\n\t...rest\n}) {\n\tconst [ref, inView] = useInView({ threshold, rootMargin })\n\tconst shouldAnimate = animate || inView\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nSectionHeading.propTypes = {\n\tchildren: node.isRequired,\n\tclassName: string,\n\tanimate: bool,\n\tas: string,\n\trootMargin: string,\n\tsize: string,\n\tthreshold: number\n}\n\nexport default SectionHeading\n","import {\n\tshape,\n\tbool,\n\tstring,\n\tnumber,\n\tobject,\n\tarrayOf,\n\toneOfType\n} from 'prop-types'\n\nexport const pageContext = shape({\n\tmedia: string.isRequired\n})\n\nexport const page = shape({\n\ttitle: string.isRequired,\n\tcontent: string,\n\tid: string.isRequired,\n\twordpress_id: number.isRequired,\n\tblocks: arrayOf(\n\t\tshape({\n\t\t\tattrs: shape({\n\t\t\t\tname: string,\n\t\t\t\twordpress_id: oneOfType([string, number]),\n\t\t\t\tdata: object\n\t\t\t})\n\t\t})\n\t)\n})\n\nexport const post = shape({\n\ttitle: string.isRequired,\n\tcontent: string,\n\tid: string.isRequired,\n\tfeatured_image_url: shape({\n\t\twordpress_id: number.isRequired\n\t}),\n\tblocks: arrayOf(\n\t\tshape({\n\t\t\tattrs: shape({\n\t\t\t\tname: string,\n\t\t\t\twordpress_id: oneOfType([string, number]),\n\t\t\t\tdata: object\n\t\t\t})\n\t\t})\n\t)\n})\n\nexport const caseStudies = shape({\n\tnodes: arrayOf(page)\n})\n\nexport const posts = shape({\n\tnodes: arrayOf(page)\n})\n\nexport const quotes = shape({\n\tnodes: arrayOf(\n\t\tshape({\n\t\t\tcontent: string.isRequired,\n\t\t\ttitle: string.isRequired,\n\t\t\twordpress_id: number.isRequired\n\t\t})\n\t)\n})\n\nexport const people = shape({\n\tnodes: arrayOf(\n\t\tshape({\n\t\t\ttitle: string.isRequired,\n\t\t\tdepartment: arrayOf(number),\n\t\t\tfeatured_media: object,\n\t\t\twordpress_id: number.isRequired,\n\t\t\tid: string.isRequired\n\t\t})\n\t)\n})\n\nexport const departments = shape({\n\tnodes: arrayOf(\n\t\tshape({\n\t\t\tname: string.isRequired,\n\t\t\twordpress_id: number.isRequired,\n\t\t\tid: string.isRequired\n\t\t})\n\t)\n})\n\nexport const news = shape({\n\tmedia: string.isRequired,\n\tcategories: arrayOf(\n\t\tshape({\n\t\t\ttitle: string.isRequired,\n\t\t\turl: string.isRequired\n\t\t})\n\t),\n\tentries: arrayOf(\n\t\tshape({\n\t\t\ttitle: string.isRequired,\n\t\t\tcategory: string,\n\t\t\tpath: string.isRequired,\n\t\t\tid: string.isRequired,\n\t\t\tfeatured_image_url: shape({\n\t\t\t\twordpress_id: number.isRequired\n\t\t\t})\n\t\t})\n\t),\n\tprev: oneOfType([string, bool]),\n\tnext: oneOfType([string, bool])\n})\n","import React from 'react'\nimport { string, shape } from 'prop-types'\nimport { Helmet } from 'react-helmet-async'\n\nfunction Seo({\n\tcanonical,\n\ttwitter_title,\n\ttwitter_image,\n\ttwitter_description,\n\t// redirect,\n\ttitle,\n\topengraph_title,\n\topengraph_image,\n\t// metakeywords,\n\topengraph_description,\n\tmetadesc,\n\tmeta_robots_noindex,\n\tmeta_robots_nofollow,\n\timage\n\t// linkdex,\n\t// focuskw\n}) {\n\tconst heading = title ? `${title} | Ultraleap` : 'Ultraleap'\n\tconst url = typeof window !== 'undefined' ? window.location.href : canonical\n\n\tconst twitterImage = twitter_image\n\t\t? twitter_image.source_url\n\t\t: image\n\t\t? image.source_url\n\t\t: \"https://cms.ultraleap.com/app/uploads/2020/02/northern-lights.jpg\"\n\n\tconst opengraphImage = opengraph_image\n\t\t? opengraph_image.source_url\n\t\t: image\n\t\t? image.source_url\n\t\t: null\n\n\treturn (\n\t\t\n\t\t\t{heading}\n\t\t\t\n\t\t\t{/* */}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t{opengraphImage && }\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t{twitterImage && }\n\t\t\t{twitterImage && }\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nSeo.propTypes = {\n\tcanonical: string,\n\ttwitter_title: string,\n\ttwitter_image: shape({\n\t\tsource_url: string\n\t}),\n\ttwitter_description: string,\n\ttitle: string,\n\topengraph_title: string,\n\topengraph_image: shape({\n\t\tsource_url: string\n\t}),\n\timage: shape({\n\t\tsource_url: string\n\t}),\n\tmetakeywords: string,\n\topengraph_description: string,\n\tmetadesc: string,\n\tmeta_robots_noindex: string,\n\tmeta_robots_nofollow: string\n\t// redirect: string,\n\t// meta_robots_adv: string,\n\t// linkdex: string,\n\t// focuskw: string\n}\n\nexport default Seo\n","import { useRef } from 'react'\n\nfunction useConstant(fn) {\n\tconst ref = useRef()\n\n\tif (!ref.current) {\n\t\tref.current = { v: fn() }\n\t}\n\n\treturn ref.current.v\n}\n\nexport default useConstant\n"],"sourceRoot":""}