{"version":3,"file":"c1e1b17ae09dec8310cacbab0a837673a33e22f0-dd3e3e3fad3ea9bc5392.js","mappings":"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","sources":["webpack://gfw-brochure/./node_modules/@wordpress/block-serialization-default-parser/build-module/index.js","webpack://gfw-brochure/./src/components/CrossHeading.tsx","webpack://gfw-brochure/./src/components/ContactUs/CrossHeadingRIchGrid.tsx","webpack://gfw-brochure/./src/components/LazyBlock/FactBanner.tsx","webpack://gfw-brochure/./src/components/LazyBlock/IndentedTextWithLargeImage.tsx","webpack://gfw-brochure/./src/components/LazyBlock/PartnerGalleryItem.tsx","webpack://gfw-brochure/./src/components/LazyBlock/GalleryCaroselPopup.tsx","webpack://gfw-brochure/./src/components/LazyBlock/Partnershipgallery.tsx","webpack://gfw-brochure/./src/components/LazyBlock/SmallTextWithGallery.tsx","webpack://gfw-brochure/./src/components/LazyBlock/TextWithSplitImageOverlap.tsx","webpack://gfw-brochure/./src/components/LazyBlock/ThumbnailGalleryItem.tsx","webpack://gfw-brochure/./src/components/LazyBlock/ThumbnailGallery.tsx","webpack://gfw-brochure/./src/components/LazyBlock/UniversityCourseBlock.tsx","webpack://gfw-brochure/./src/components/PartnerLogo.tsx","webpack://gfw-brochure/./src/components/ContactUs/HowToGetThere.tsx","webpack://gfw-brochure/./src/components/ContactUs/Locations.tsx","webpack://gfw-brochure/./src/components/ContactUs/MapEvent.tsx","webpack://gfw-brochure/./src/components/ScheduleDownload.tsx","webpack://gfw-brochure/./src/components/CountDownTimer.tsx","webpack://gfw-brochure/./src/components/LazyBlock/HomePageSchedule.tsx","webpack://gfw-brochure/./src/components/LazyBlock/UniversityGraduatesBlock.tsx","webpack://gfw-brochure/./src/components/LazyBlock/LiveStream.tsx","webpack://gfw-brochure/./src/components/PortfoliosTemplate/PortfolioCarouselCard.tsx","webpack://gfw-brochure/./src/components/Carousel.tsx","webpack://gfw-brochure/./src/components/PortfoliosTemplate/FeaturedPortfoliosCarouselSingle.tsx","webpack://gfw-brochure/./src/components/PortfoliosTemplate/KeynoteSpeakers.tsx","webpack://gfw-brochure/./src/util/LazyBlockFactory.tsx"],"sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar document;\nvar offset;\nvar output;\nvar stack;\n/**\n * Matches block comment delimiters\n *\n * While most of this pattern is straightforward the attribute parsing\n * incorporates a tricks to make sure we don't choke on specific input\n *\n * - since JavaScript has no possessive quantifier or atomic grouping\n * we are emulating it with a trick\n *\n * we want a possessive quantifier or atomic group to prevent backtracking\n * on the `}`s should we fail to match the remainder of the pattern\n *\n * we can emulate this with a positive lookahead and back reference\n * (a++)*c === ((?=(a+))\\1)*c\n *\n * let's examine an example:\n * - /(a+)*c/.test('aaaaaaaaaaaaad') fails after over 49,000 steps\n * - /(a++)*c/.test('aaaaaaaaaaaaad') fails after 85 steps\n * - /(?>a+)*c/.test('aaaaaaaaaaaaad') fails after 126 steps\n *\n * this is because the possessive `++` and the atomic group `(?>)`\n * tell the engine that all those `a`s belong together as a single group\n * and so it won't split it up when stepping backwards to try and match\n *\n * if we use /((?=(a+))\\1)*c/ then we get the same behavior as the atomic group\n * or possessive and prevent the backtracking because the `a+` is matched but\n * not captured. thus, we find the long string of `a`s and remember it, then\n * reference it as a whole unit inside our pattern\n *\n * @see http://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead\n * @see http://blog.stevenlevithan.com/archives/mimic-atomic-groups\n * @see https://javascript.info/regexp-infinite-backtracking-problem\n *\n * once browsers reliably support atomic grouping or possessive\n * quantifiers natively we should remove this trick and simplify\n *\n * @type {RegExp}\n *\n * @since 3.8.0\n * @since 4.6.1 added optimization to prevent backtracking on attribute parsing\n */\n\nvar tokenizer = /)[^])*)\\5|[^]*?)}\\s+)?(\\/)?-->/g;\nfunction Block(blockName, attrs, innerBlocks, innerHTML, innerContent) {\n return {\n blockName: blockName,\n attrs: attrs,\n innerBlocks: innerBlocks,\n innerHTML: innerHTML,\n innerContent: innerContent\n };\n}\nfunction Freeform(innerHTML) {\n return Block(null, {}, [], innerHTML, [innerHTML]);\n}\nfunction Frame(block, tokenStart, tokenLength, prevOffset, leadingHtmlStart) {\n return {\n block: block,\n tokenStart: tokenStart,\n tokenLength: tokenLength,\n prevOffset: prevOffset || tokenStart + tokenLength,\n leadingHtmlStart: leadingHtmlStart\n };\n}\n/**\n * Parser function, that converts input HTML into a block based structure.\n *\n * @param {string} doc The HTML document to parse.\n *\n * @example\n * Input post:\n * ```html\n * \n *
\n *
\n *

Left

\n *
\n * \n *\n * \n *
\n *

Middle

\n *
\n * \n *\n * \n *
\n *
\n * \n * ```\n *\n * Parsing code:\n * ```js\n * import { parse } from '@wordpress/block-serialization-default-parser';\n *\n * parse( post ) === [\n * {\n * blockName: \"core/columns\",\n * attrs: {\n * columns: 3\n * },\n * innerBlocks: [\n * {\n * blockName: \"core/column\",\n * attrs: null,\n * innerBlocks: [\n * {\n * blockName: \"core/paragraph\",\n * attrs: null,\n * innerBlocks: [],\n * innerHTML: \"\\n

Left

\\n\"\n * }\n * ],\n * innerHTML: '\\n
\\n'\n * },\n * {\n * blockName: \"core/column\",\n * attrs: null,\n * innerBlocks: [\n * {\n * blockName: \"core/paragraph\",\n * attrs: null,\n * innerBlocks: [],\n * innerHTML: \"\\n

Middle

\\n\"\n * }\n * ],\n * innerHTML: '\\n
\\n'\n * },\n * {\n * blockName: \"core/column\",\n * attrs: null,\n * innerBlocks: [],\n * innerHTML: '\\n
\\n'\n * }\n * ],\n * innerHTML: '\\n
\\n\\n\\n\\n
\\n'\n * }\n * ];\n * ```\n * @return {Array} A block-based representation of the input HTML.\n */\n\nexport var parse = function parse(doc) {\n document = doc;\n offset = 0;\n output = [];\n stack = [];\n tokenizer.lastIndex = 0;\n do {// twiddle our thumbs\n } while (proceed());\n return output;\n};\nfunction proceed() {\n var next = nextToken();\n var _next = _slicedToArray(next, 5),\n tokenType = _next[0],\n blockName = _next[1],\n attrs = _next[2],\n startOffset = _next[3],\n tokenLength = _next[4];\n var stackDepth = stack.length; // we may have some HTML soup before the next block\n\n var leadingHtmlStart = startOffset > offset ? offset : null;\n switch (tokenType) {\n case 'no-more-tokens':\n // if not in a block then flush output\n if (0 === stackDepth) {\n addFreeform();\n return false;\n } // Otherwise we have a problem\n // This is an error\n // we have options\n // - treat it all as freeform text\n // - assume an implicit closer (easiest when not nesting)\n // for the easy case we'll assume an implicit closer\n\n if (1 === stackDepth) {\n addBlockFromStack();\n return false;\n } // for the nested case where it's more difficult we'll\n // have to assume that multiple closers are missing\n // and so we'll collapse the whole stack piecewise\n\n while (0 < stack.length) {\n addBlockFromStack();\n }\n return false;\n case 'void-block':\n // easy case is if we stumbled upon a void block\n // in the top-level of the document\n if (0 === stackDepth) {\n if (null !== leadingHtmlStart) {\n output.push(Freeform(document.substr(leadingHtmlStart, startOffset - leadingHtmlStart)));\n }\n output.push(Block(blockName, attrs, [], '', []));\n offset = startOffset + tokenLength;\n return true;\n } // otherwise we found an inner block\n\n addInnerBlock(Block(blockName, attrs, [], '', []), startOffset, tokenLength);\n offset = startOffset + tokenLength;\n return true;\n case 'block-opener':\n // track all newly-opened blocks on the stack\n stack.push(Frame(Block(blockName, attrs, [], '', []), startOffset, tokenLength, startOffset + tokenLength, leadingHtmlStart));\n offset = startOffset + tokenLength;\n return true;\n case 'block-closer':\n // if we're missing an opener we're in trouble\n // This is an error\n if (0 === stackDepth) {\n // we have options\n // - assume an implicit opener\n // - assume _this_ is the opener\n // - give up and close out the document\n addFreeform();\n return false;\n } // if we're not nesting then this is easy - close the block\n\n if (1 === stackDepth) {\n addBlockFromStack(startOffset);\n offset = startOffset + tokenLength;\n return true;\n } // otherwise we're nested and we have to close out the current\n // block and add it as a innerBlock to the parent\n\n var stackTop = stack.pop();\n var html = document.substr(stackTop.prevOffset, startOffset - stackTop.prevOffset);\n stackTop.block.innerHTML += html;\n stackTop.block.innerContent.push(html);\n stackTop.prevOffset = startOffset + tokenLength;\n addInnerBlock(stackTop.block, stackTop.tokenStart, stackTop.tokenLength, startOffset + tokenLength);\n offset = startOffset + tokenLength;\n return true;\n default:\n // This is an error\n addFreeform();\n return false;\n }\n}\n/**\n * Parse JSON if valid, otherwise return null\n *\n * Note that JSON coming from the block comment\n * delimiters is constrained to be an object\n * and cannot be things like `true` or `null`\n *\n * @param {string} input JSON input string to parse\n * @return {Object|null} parsed JSON if valid\n */\n\nfunction parseJSON(input) {\n try {\n return JSON.parse(input);\n } catch (e) {\n return null;\n }\n}\nfunction nextToken() {\n // aye the magic\n // we're using a single RegExp to tokenize the block comment delimiters\n // we're also using a trick here because the only difference between a\n // block opener and a block closer is the leading `/` before `wp:` (and\n // a closer has no attributes). we can trap them both and process the\n // match back in JavaScript to see which one it was.\n var matches = tokenizer.exec(document); // we have no more tokens\n\n if (null === matches) {\n return ['no-more-tokens'];\n }\n var startedAt = matches.index;\n var _matches = _slicedToArray(matches, 7),\n match = _matches[0],\n closerMatch = _matches[1],\n namespaceMatch = _matches[2],\n nameMatch = _matches[3],\n attrsMatch\n /* internal/unused */ = _matches[4],\n voidMatch = _matches[6];\n var length = match.length;\n var isCloser = !!closerMatch;\n var isVoid = !!voidMatch;\n var namespace = namespaceMatch || 'core/';\n var name = namespace + nameMatch;\n var hasAttrs = !!attrsMatch;\n var attrs = hasAttrs ? parseJSON(attrsMatch) : {}; // This state isn't allowed\n // This is an error\n\n if (isCloser && (isVoid || hasAttrs)) {// we can ignore them since they don't hurt anything\n // we may warn against this at some point or reject it\n }\n if (isVoid) {\n return ['void-block', name, attrs, startedAt, length];\n }\n if (isCloser) {\n return ['block-closer', name, null, startedAt, length];\n }\n return ['block-opener', name, attrs, startedAt, length];\n}\nfunction addFreeform(rawLength) {\n var length = rawLength ? rawLength : document.length - offset;\n if (0 === length) {\n return;\n }\n output.push(Freeform(document.substr(offset, length)));\n}\nfunction addInnerBlock(block, tokenStart, tokenLength, lastOffset) {\n var parent = stack[stack.length - 1];\n parent.block.innerBlocks.push(block);\n var html = document.substr(parent.prevOffset, tokenStart - parent.prevOffset);\n if (html) {\n parent.block.innerHTML += html;\n parent.block.innerContent.push(html);\n }\n parent.block.innerContent.push(null);\n parent.prevOffset = lastOffset ? lastOffset : tokenStart + tokenLength;\n}\nfunction addBlockFromStack(endOffset) {\n var _stack$pop = stack.pop(),\n block = _stack$pop.block,\n leadingHtmlStart = _stack$pop.leadingHtmlStart,\n prevOffset = _stack$pop.prevOffset,\n tokenStart = _stack$pop.tokenStart;\n var html = endOffset ? document.substr(prevOffset, endOffset - prevOffset) : document.substr(prevOffset);\n if (html) {\n block.innerHTML += html;\n block.innerContent.push(html);\n }\n if (null !== leadingHtmlStart) {\n output.push(Freeform(document.substr(leadingHtmlStart, tokenStart - leadingHtmlStart)));\n }\n output.push(block);\n}","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport CrossIcon from \"../assets/svg/GFW_cross.svg\"\n\ninterface ICrossHeading {\n data: any\n}\n\nconst CrossHeading: React.FC = ({ data }) => {\n const subtitle = data.attrs.subtitle\n const title = data.attrs.heading\n const text = data.attrs[\"body\"]\n return (\n \n \n \n \n {subtitle}\n {title}\n \n \n\n {text}\n \n )\n}\n\nexport default CrossHeading\n\nconst CrossHeadingContainer = styled(Container)`\n /* border: 1px solid red; */\n display: flex;\n align-items: center;\n padding-top: 60px;\n padding-bottom: 60px;\n position: relative;\n left: -80px;\n @media (max-width: 1400px) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 0px;\n left: 0px;\n }\n`\n\nconst CrossHeadingTitlesContainer = styled.div`\n /* border: 1px solid red; */\n min-width: 280px;\n display: flex;\n flex-direction: column;\n margin-left: -80px;\n width: 100%;\n\n /* @media (min-width: 768px) {\n max-width: ${props => (props.titleWidth ? props.titleWidth : \"320px\")};\n } */\n`\n\nconst CrossHeadingSubtitle = styled.h5`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 2px;\n line-height: 17px;\n margin-bottom: 0px;\n @media (max-width: 768px) {\n font-size: 12px;\n line-height: 14px;\n }\n`\n\nconst CrossHeadingTitle = styled.h2`\n font-size: 50px;\n font-weight: 600;\n @media (max-width: 768px) {\n font-size: 30px;\n line-height: 33px;\n }\n`\n\nconst CrossHeadingText = styled.p`\n font-size: 22px;\n font-weight: 500;\n letter-spacing: 0;\n line-height: 32px;\n max-width: 500px;\n\n color: #4a4a4a;\n padding: 10px;\n @media (max-width: 768px) {\n font-size: 16px;\n\n line-height: 26px;\n }\n`\n\nconst HeadingContainer = styled.div`\n display: flex;\n align-items: center;\n\n /* @media (max-width: ${props => props.theme.breakpoints.md}) {\n \n } */\n`\n\nconst Cross = styled(CrossIcon)`\n max-width: 160px;\n max-height: 160px;\n margin-left: 20px;\n @media (max-width: 768px) {\n width: 124px;\n height: 124px;\n }\n`\n","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport CrossIcon from \"../../assets/svg/GFW_cross.svg\"\nimport { RichTextContainer } from \"../LazyBlock/RichTextContainer\"\n\ninterface ICrossHeading {\n data: any\n}\n\nconst CrossHeadingRichGrid: React.FC = ({ data }) => {\n const subtitle = data.attrs[\"sub-title\"]\n const title = data.attrs[\"main-title\"]\n const text1 = data.attrs[\"contact-box-1\"]\n const text2 = data.attrs[\"contact-box-2\"]\n const text3 = data.attrs[\"contact-box-3\"]\n const text4 = data.attrs[\"contact-box-4\"]\n return (\n \n \n \n \n \n {subtitle} \n {title}\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n )\n}\n\nexport default CrossHeadingRichGrid\n\nconst CrossHeadingContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n //align-items: center;\n\n margin-bottom: 50px;\n @media (max-width: ${props => props.theme.breakpoints.lg}) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n margin-top: 32px;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 20px;\n }\n`\nconst Cross = styled(CrossIcon)`\n max-width: 230px;\n max-height: 230px;\n\n @media (max-width: 768px) {\n width: 120px;\n height: 120px;\n }\n`\nconst LeftColumn = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n\n width: 40%;\n margin-top: 60px;\n padding: 0px 20px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n padding: 10px 0px;\n justify-content: flex-start;\n align-items: center;\n }\n`\n\nconst BodyContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 60%;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n }\n`\nconst BodyTop = styled.div`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-column-gap: 30px;\n width: 100%;\n padding-top: 80px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-top: 0px;\n }\n`\n\nconst BodyBottom = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst CrossHeadingTitlesContainer = styled.div``\n\nconst CrossHeadingSubtitle = styled.h6`\n z-index: 1;\n margin-bottom: 5px;\n margin-left: -50px;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin-top: 15px;\n }\n`\n\nconst CrossHeadingTitle = styled.h4`\n text-transform: uppercase;\n z-index: 1;\n margin-left: -50px;\n`\n","import styled from \"styled-components\"\nimport React from \"react\"\n\nimport { Container } from \"@material-ui/core\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport Cross from \"../../assets/svg/GFW_cross.svg\"\n\ninterface FactBannerInterface {\n data: any\n}\n\nexport const FactBanner = ({ data }: FactBannerInterface) => {\n const richText1 = data.attrs[\"rich-text-1\"]\n const richText2 = data.attrs[\"rich-text-2\"]\n const richText3 = data.attrs[\"rich-text-3\"]\n return (\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst InnerContainer = styled(Container)`\n /* display: grid \n width: 100%; */\n display: flex !important;\n justify-content: center;\n align-items: flex-start;\n background-color: #000000;\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 65px;\n @media (max-width: 1024px) {\n flex-direction: column;\n align-items: center;\n gap: 30px;\n }\n`\n\nconst StatCard = styled.div`\n display: flex;\n /* border: 1px solid red; */\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n flex-wrap: break-word;\n /* margin: 40px; */\n overflow-x: hidden;\n margin: 0 2px;\n padding: 20px;\n > * {\n color: white;\n text-align: center;\n > * {\n color: white;\n text-align: center;\n }\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n max-width: 280px;\n }\n`\n\nconst LineCrossContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n width: 100%;\n /* margin-bottom: 40px; */\n`\n\nconst Line = styled.div`\n content: \"\";\n\n width: 100%;\n flex: 1;\n height: 1px;\n border: none;\n background-color: ${props => props.theme.colors.turquoise};\n @media (max-width: 1156px) {\n width: 100px;\n }\n @media (max-width: 1024px) {\n width: 140px;\n }\n`\n\nconst DividerContainer = styled.div``\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport { Container } from \"@material-ui/core\"\n\ninterface IIndentedTextWithLargeImage {\n data: any\n}\n\nexport const IndentedTextWithLargeImage: React.FC = ({ data }) => {\n const subtitle = data.attrs.subtitle\n const body = data.attrs.body\n const imageOnLeft = data.attrs[\"image-left-aligned\"]\n\n const image = data.attrs.image\n let jsonImage\n\n try {\n const rawGallery = decodeURIComponent(image)\n const jsonImageRaw = JSON.parse(rawGallery)\n jsonImage = jsonImageRaw.url\n } catch (e) {\n // console.log(e)\n }\n if(jsonImage===undefined){\n try {\n jsonImage = image.sourceUrl\n } catch (e) {\n // console.log(e)\n }}\n\n return (\n \n \n \n {subtitle}\n \n \n \n {/* */}\n \n \n \n \n )\n}\n\ninterface IAlignmentProps {\n imageLeft: boolean\n}\nconst AboutUsWrapper = styled.div`\n width: 100%;\n /* height: 600px; */\n margin: 30px auto 40px;\n display: flex;\n flex-direction: ${props => (props.imageLeft ? \"row-reverse\" : \"row\")};\n //justify-content: center;\n align-items: flex-start;\n padding-top: 60px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: ${props => (props.imageLeft ? \"column-reverse\" : \"column\")};\n align-items: flex-end;\n height: auto;\n width: 100%;\n padding-top: 0px;\n margin: 30px auto 10px;\n }\n`\nconst AboutUsImgContainer = styled.div`\n width: 50%;\n overflow: hidden;\n height: 500px;\n padding: 120px auto;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 auto;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column;\n width: 100%;\n height: 485px;\n margin: auto;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n flex-direction: column;\n width: 100%;\n height: 285px;\n margin: auto;\n }\n`\nconst IMG = styled.img`\n object-fit: contain;\n`\nconst AboutUsTextBox = styled.div`\n width: 50%;\n min-height: wrap;\n display: flex;\n\n flex-direction: column;\n justify-content: center;\n z-index: 2;\n padding: 0 30px;\n\n margin: 0;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n height: auto;\n padding: 30px 20px 20px 0px;\n margin: 0;\n align-items: flex-start;\n justify-content: space-between;\n }\n`\n\nconst Subtitle = styled.p`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 2px;\n line-height: 30px;\n text-transform: uppercase;\n margin-bottom: 15px;\n text-align: left;\n color: black;\n`\n","import styled from \"styled-components\"\nimport React from \"react\"\n\ninterface PartnerGalleryItemI {\n imageData: any\n setModalOpen: React.Dispatch>\n index: number\n setCardNumber: any\n}\n\nexport const PartnerGalleryItem: React.FC = ({\n imageData,\n setModalOpen,\n index,\n setCardNumber,\n}) => {\n const HandleOnClick = () => {\n setModalOpen(true)\n setCardNumber(index)\n }\n return (\n \n {/* */}\n \n )\n}\n\ninterface ImageContianerI {\n url: string\n}\n\nconst ImageContainer = styled.div`\n height: 280px;\n margin-bottom: 10px;\n width: 100%;\n overflow: hidden;\n display: flex;\n background-position: center;\n background-image: url(${props => props.url});\n background-size: cover;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 200px;\n }\n`\nconst StyledImg = styled.img`\n flex: 1;\n`\n","import { Card, IconButton } from \"@material-ui/core\"\nimport React from \"react\"\nimport CloseIcon from \"@material-ui/icons/Close\"\nimport styled from \"styled-components\"\nimport \"swiper/swiper-bundle.css\"\nimport ArrowLeft from \"../../assets/svg/long-arrow-left.svg\"\nimport ArrowRight from \"../../assets/svg/long-arrow-right.svg\"\ninterface GalleryCaroselPopupI {\n imageData: any\n modalOpen: boolean\n setModalOpen: React.Dispatch>\n setCardNumber: any\n cardNumber: number\n}\n\nexport const GalleryCaroselPopup: React.FC = ({\n imageData,\n modalOpen,\n setModalOpen,\n setCardNumber,\n cardNumber,\n}) => {\n const handleBack = () => {\n if (cardNumber !== 0) {\n setCardNumber(cardNumber - 1)\n }\n }\n const handleForward = () => {\n if (cardNumber !== imageData.length - 1) {\n setCardNumber(cardNumber + 1)\n }\n }\n let dotWidth\n let dotPosition\ntry{\n dotWidth = `${(1 / imageData.length) * 100}%`\n dotPosition = `${(1 / imageData.length) * 100 * cardNumber}%`\n\n return (\n
\n {\n setModalOpen(false)\n }}\n >\n \n {\n e.stopPropagation()\n }}\n >\n \n {\n setModalOpen(false)\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

{imageData[cardNumber].caption}

\n
\n \n {cardNumber + 1 + \"/\" + imageData.length}\n \n \n
\n \n
\n )\n}catch(e){\n // console.log(e)\n return
\n}\n\n\n \n}\n\nconst CaptionContainer = styled.div`\n /* border: 1px solid red; */\n margin-left: 60px;\n margin-right: 60px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding-top: 20px;\n > p {\n /* border: 1px solid red; */\n color: black;\n text-align: center;\n }\n`\n\nconst SingleArrowContainer = styled.div`\n max-width: 46px;\n height: 15px;\n margin-right: 20px;\n`\n\nconst IconButtonContainer = styled.div`\n /* border: 1px solid black; */\n display: flex;\n justify-content: flex-end;\n`\nconst ArrowContainer = styled.div`\n /* border: 1px solid black; */\n display: flex;\n width: 100%;\n padding-left: 55px;\n padding-right: 55px;\n /* border: 1px solid red; */\n`\nconst BarContainer = styled.div`\n /* border: 1px solid black; */\n content: \"\";\n display: flex;\n flex: 1;\n width: 100%;\n /* border: 1px solid red; */\n align-items: center;\n`\nconst Bar = styled.div`\n /* border: 1px solid black; */\n min-height: 1px;\n max-height: 1px;\n width: 100%;\n background-color: #cbcbcb;\n`\n\ninterface BarDotI {\n barWidth: string\n barPosition: string\n}\n\nconst BarDot = styled.div`\n background-color: #0db0e7;\n min-height: 3px;\n max-height: 3px;\n top: -1px;\n position: relative;\n left: ${props => props.barPosition};\n min-width: ${props => props.barWidth};\n max-width: ${props => props.barWidth};\n`\n// const ImageContainer = styled.div``\nconst CounterContainer = styled.div`\n padding-bottom: 30px;\n display: flex;\n justify-content: center;\n /* border: 1px solid red; */\n > span {\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 26px;\n text-align: center;\n }\n`\ninterface ImageContianerI {\n url: string\n}\nconst ImageContainer = styled.div`\n height: 500px;\n width: 460px;\n display: flex;\n background-image: url(${props => props.url});\n background-size: cover;\n background-position: center;\n /* border: 1px solid red; */\n margin: 0px auto;\n overflow: hidden;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 375px;\n width: 300px;\n }\n`\nconst StyledImg = styled.img`\n flex: 1;\n`\n\ninterface ModalI {\n open: boolean\n}\n\nconst MyModal = styled.div`\n display: ${props => (props.open ? \"block\" : \"none\")}; /* Hidden by default */\n position: fixed; /* Stay in place */\n z-index: 10; /* Sit on top */\n left: 0;\n top: 0;\n width: 100%; /* Full width */\n height: 100%; /* Full height */\n overflow: auto; /* Enable scroll if needed */\n background-color: rgb(0, 0, 0); /* Fallback color */\n background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */\n /* display: flex; */\n justify-content: center;\n align-items: center;\n`\n\nconst ModalContent = styled.div`\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n z-index: 3;\n`\n\nconst StyledCard = styled(Card)`\n max-width: 520px;\n max-height: 710px;\n width: 520px;\n height: 710px;\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n z-index: 2 !important; /* Sit on top */\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 610px;\n width: 340px;\n max-width: 340px;\n max-height: 610px;\n }\n`\n","import React, { useState } from \"react\"\nimport styled, { useTheme } from \"styled-components\"\nimport { RichTextContainer } from \"./RichTextContainer\"\n\nimport { Swiper, SwiperSlide } from \"swiper/react\"\nimport { PartnerGalleryItem } from \"./PartnerGalleryItem\"\nimport { makeStyles } from \"@material-ui/core/styles\"\nimport { GalleryCaroselPopup } from \"./GalleryCaroselPopup\"\n\ninterface PartnershipGallery {\n data: any\n}\nconst useStyles = makeStyles(theme => ({\n paper: {\n position: \"absolute\",\n width: \"40%\",\n minWidth: \"300px\",\n backgroundColor: theme.palette.background.paper,\n border: \"2px solid #000\",\n boxShadow: theme.shadows[5],\n padding: \"20px\",\n },\n}))\n\nexport const PartnershipGallery: React.FC = ({ data }) => {\n const headline = data.attrs.headline\n const body = data.attrs.body\n const gallery = data.attrs.gallery\n\n const theme = useTheme()\n const [slides, setSlides] = useState(3)\n let jsonGallery\n let pairs\n const rawGallery = decodeURIComponent(gallery)\n try{\n jsonGallery = JSON.parse(rawGallery)\n pairs = jsonGallery.reduce(function (result, value, index, array) {\n if (index % 2 === 0) result.push(array.slice(index, index + 2))\n return result\n }, [])\n }catch(e){\n // console.log(e)\n }\n \n const [modalOpen, setModalOpen] = useState(false)\n const [modalStyle] = React.useState(getModalStyle)\n const [cardNumber, setCardNumber] = React.useState(0)\n\n const handleOpen = () => {\n setModalOpen(true)\n }\n\n const handleClose = () => {\n setModalOpen(false)\n }\n\n function rand() {\n return Math.round(Math.random() * 20) - 10\n }\n function getModalStyle() {\n const top = 50\n const left = 50\n\n return {\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n }\n }\n const classes = useStyles()\n\n return (\n \n \n \n {headline}\n \n \n \n\n \n \n {pairs ? pairs.map((v, i) => {\n return (\n \n \n \n \n \n \n )\n }):(null)}\n \n \n \n \n )\n}\n\nconst StyledCard = styled.div`\n border: 1px solid red;\n height: 280px;\n width: 280px;\n`\n\nconst StyledSwiper = styled(Swiper)`\n /* border: 1px solid red; */\n height: 600px;\n overflow: visible;\n transition: transform 0.8s ease;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 450px;\n }\n`\nconst ImageContainer = styled.div`\n //height:100%;\n\n width: 100%;\n overflow: hidden;\n display: flex;\n background-position: center;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n }\n`\n\nconst StyledCardContainer = styled.div`\n /* border: 1px solid red; */\n /* height: 100%; */\n /* overflow: visible; */\n display: flex;\n flex-direction: column;\n height: 580px;\n`\n\nconst MainContainer = styled.div`\n padding-top: 50px;\n margin: 30px auto;\n overflow: visible;\n /* border: 1px solid red; */\n`\n\nconst AboutUsWrapper = styled.div`\n width: 100%;\n\n display: flex;\n justify-content: center;\n align-items: flex-start;\n margin-bottom: 99px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column-reverse;\n padding: 20px 0;\n height: 700px;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 700px;\n }\n\n .carousel-drag-slide {\n height: 600px;\n }\n\n .swiper-scrollbar {\n z-index: 100;\n position: absolute;\n height: 1px;\n width: calc(100vw - 140px);\n background: ${props => props.theme.colors.turquoise};\n left: 100px;\n bottom: -10px;\n @media screen and (min-width: 1024px) {\n width: calc(100vw - 6% - 100px);\n }\n @media screen and (min-width: 1200px) {\n width: 92%;\n }\n }\n .swiper-scrollbar-drag {\n height: 3px;\n position: absolute;\n top: 0px;\n background: ${props => props.theme.colors.turquoise};\n }\n\n .swiper-button-next {\n margin-left: 18px;\n left: 15px;\n bottom: -10px;\n }\n\n .swiper-button-prev {\n transform: rotate(-180deg);\n left: 0;\n }\n .swiper-button-next::after,\n .swiper-button-prev::after {\n opacity: 0;\n }\n .swiper-button-next,\n .swiper-button-prev {\n position: absolute;\n top: auto;\n bottom: -20px;\n width: 4.9rem;\n height: 1rem;\n margin: 0;\n }\n .swiper-button-next {\n left: 50px;\n }\n\n .swiper-button-next,\n .swiper-button-prev {\n background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ny44NCAxMS4yNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwZGIwZTc7ZmlsbC1ydWxlOmV2ZW5vZGQ7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9ImNscy0xIiBkPSJNNDUuMzgsNiw0MS4xNiwxLjg0bDEtMSw1LjcsNS42Mi01LjcsNS42Mi0xLTFMNDUuMzgsN0gwVjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0wLjg4KSIvPjwvc3ZnPg==);\n background-repeat: no-repeat;\n /* background-color: ${props => props.theme.colors.turquoise}; */\n background-size: 100% auto;\n background-position: center;\n width: 45px;\n height: 21px;\n }\n .swiper-button-next:hover,\n .swiper-button-prev:hover {\n /* background: url(../assets/svg/long-arrow-right.svg); */\n background-repeat: no-repeat;\n background-size: 100% auto;\n\n background-position: center;\n }\n .swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n }\n`\nconst VideoContainer = styled.div`\n width: 65%;\n\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column-reverse;\n width: 100%;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin: 30px auto;\n flex-direction: column-reverse;\n height: auto;\n }\n`\n\nconst AboutUsTextBox = styled.div`\n width: 35%;\n height: 600px;\n z-index: 105;\n background-color: white;\n\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n z-index: 2;\n padding: 0 30px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n padding: 60px 0px 20px 0px;\n\n align-items: flex-start;\n }\n @media (min-width: ${props => props.theme.breakpoints.md}) {\n max-width: 560px;\n }\n`\n\nconst Subtitle = styled.p`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 2px;\n line-height: 30px;\n text-transform: uppercase;\n margin-bottom: 15px;\n text-align: left;\n`\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport MainGrid from \"../../style/MainGrid\"\n\ninterface ISmallTextWithGallery {\n data: any\n}\n\nexport const SmallTextWithGallery: React.FC = ({ data }) => {\n const subtitle = data.attrs.subtitle\n const body = data.attrs.body\n const images = data.attrs.gallery\n\n return (\n \n \n \n {subtitle}\n \n \n {/* */}\n \n \n )\n}\n\nconst AboutUsWrapper = styled.div`\n width: 100%;\n height: 600px;\n display: flex;\n justify-content: center;\n\n @media (max-width: 768px) {\n flex-direction: column;\n align-items: flex-end;\n\n width: 100%;\n }\n`\nconst AboutUsImgContainer = styled.div`\n width: 50%;\n height: 500px;\n padding: 120px auto;\n z-index: 2;\n\n @media (max-width: 768px) {\n flex-direction: column;\n width: 100%;\n height: 485px;\n\n margin: auto;\n }\n`\n\nconst AboutUsTextBox = styled.div`\n width: 50%;\n min-height: wrap;\n\n display: flex;\n\n flex-direction: column;\n justify-content: center;\n z-index: 2;\n padding: 30px;\n margin: 0;\n @media (max-width: 768px) {\n width: 100%;\n height: 200px;\n padding: 60px 20px 20px 0px;\n margin: 0;\n align-items: flex-start;\n justify-content: space-between;\n }\n`\n\nconst Subtitle = styled.p`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 2px;\n line-height: 30px;\n text-transform: uppercase;\n margin-bottom: 15px;\n text-align: left;\n`\n","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport { ButtonSecondary } from \"../Buttons/Buttons\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport CrossIcon from \"../../assets/svg/GFW_cross.svg\"\nimport { LazyLoadImage } from \"react-lazy-load-image-component\"\n\ninterface ITextWithSplitImageOverlap {\n data: any\n}\n\nexport const TextWithSplitImageOverlap: React.FC = ({ data }) => {\n const subtitle = data.attrs.subtitle\n const body = data.attrs.body\n const image = data.attrs.image\n const catLabel = data.attrs[\"call-to-action-label\"]\n const catLink = data.attrs[\"call-to-action-link\"]\n // @todo\n\n // const mainimage = useStaticQuery(graphql`\n // query MyQuery {\n // allWpPartner {\n // edges {\n // node {\n // PartnerInfo {\n // partnershipLogo {\n // localFile {\n // childImageSharp {\n // fluid(maxWidth: 80) {\n // ...GatsbyImageSharpFluid\n // }\n // }\n // }\n // }\n // }\n // }\n // }\n // }\n // }\n // `)\nlet jsonImage = {alt: null, url:null};\n try{\n const rawImage = decodeURIComponent(image)\n jsonImage = JSON.parse(rawImage)\n }catch(e){\n // console.log(e)\n }\n \n return (\n \n \n \n attributes as props\n />\n \n \n \n {subtitle}\n \n {catLink && (\n \n {catLabel}\n \n )}\n \n \n \n \n )\n}\n\nconst AboutUsWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n grid-template-rows: 0.75fr 2fr 2fr 0.25fr;\n width: 100%;\n\n margin: 0 auto 60px;\n\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n display: flex;\n flex-direction: column;\n }\n`\nconst AboutUsImgContainer = styled.div`\n z-index: 1;\n grid-area: 2/1/4/3;\n display: flex;\n\n height: wrap;\n flex-direction: column;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAgMAAADw5/WeAAAACVBMVEX6+vr4+Pjv7++npPQmAAAAKElEQVQI12NgCGBgZWBgEGBgZACzYWTo0tCoUAiJIs7gwMCCi02CXgD5agzBt66q6wAAAABJRU5ErkJggg==\");\n }\n`\nconst Background = styled.div`\n grid-area: 1/2/5/5;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAgMAAADw5/WeAAAACVBMVEX6+vr4+Pjv7++npPQmAAAAKElEQVQI12NgCGBgZWBgEGBgZACzYWTo0tCoUAiJIs7gwMCCi02CXgD5agzBt66q6wAAAABJRU5ErkJggg==\");\n z-index: 0;\n`\nconst IMG = styled.img`\n object-fit: contain;\n width: 100%;\n`\n\nconst AboutUsTextBox = styled.div`\n grid-area: 2/3/4/5;\n z-index: 2;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-items: flex-start;\n padding: 0 65px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n padding: 20px;\n height: auto;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAgMAAADw5/WeAAAACVBMVEX6+vr4+Pjv7++npPQmAAAAKElEQVQI12NgCGBgZWBgEGBgZACzYWTo0tCoUAiJIs7gwMCCi02CXgD5agzBt66q6wAAAABJRU5ErkJggg==\");\n }\n`\n\nconst Cross = styled(CrossIcon)`\n /* max-width: 230px;\n max-height: 230px; */\n padding: 60px;\n position: relative;\n top: -140px;\n margin-bottom: -140px;\n z-index: 1;\n`\n\nconst Subtitle = styled.p`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 2px;\n line-height: 30px;\n text-transform: uppercase;\n margin-bottom: 15px;\n text-align: left;\n`\n\nconst ButtonSecondaryAboutUs = styled(ButtonSecondary)`\n margin: 0px 0;\n @media (max-width: 768px) {\n width: 100%;\n }\n`\n","import styled from \"styled-components\"\nimport React from \"react\"\n\ninterface ThumbnailGalleryItemI {\n imageData: any\n setModalOpen: React.Dispatch>\n index: number\n setCardNumber: any\n}\n\nexport const ThumbnailGalleryItem: React.FC = ({\n imageData,\n setModalOpen,\n index,\n setCardNumber,\n}) => {\n const HandleOnClick = () => {\n setModalOpen(true)\n setCardNumber(index)\n }\n return (\n \n {/* */}\n \n )\n}\n\ninterface ImageContianerI {\n url: string\n}\n\nconst ImageContainer = styled.div`\n height: 300px;\n width: 100%;\n overflow: hidden;\n display: flex;\n background-position: center;\n background-image: url(${props => props.url});\n background-size: cover;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n height: 200px;\n }\n`\nconst StyledImg = styled.img`\n flex: 1;\n`\n","import React, { useState } from \"react\"\nimport styled, { useTheme } from \"styled-components\"\nimport { ButtonSecondary, SizeType } from \"../Buttons/Buttons\"\nimport { GalleryCaroselPopup } from \"./GalleryCaroselPopup\"\nimport { ThumbnailGalleryItem } from \"./ThumbnailGalleryItem\"\n\ninterface ThumbnailGalleryI {\n blockData: any\n}\n\nexport const ThumbnailGallery: React.FC = ({ blockData }) => {\n const theme = useTheme()\n const rawGallery = decodeURIComponent(blockData.attrs.gallery)\n const jsonGallery = JSON.parse(rawGallery)\n const [numberShowing, setNumberShowing] = useState(6)\n const HandleShowAll = () => {\n setNumberShowing(jsonGallery.length)\n }\n const HandleCollapse = () => {\n setNumberShowing(6)\n }\n\n const [modalOpen, setModalOpen] = useState(false)\n\n const [cardNumber, setCardNumber] = React.useState(0)\n\n return (\n \n \n\n \n {jsonGallery.map((v, i) => {\n if (i < numberShowing) {\n return (\n \n )\n } else {\n null\n }\n })}\n \n {/*

Gallery Component - Comming soon

*/}\n
\n {numberShowing > 6 ? (\n
\n \n COLLAPSE\n \n
\n ) : (\n
\n \n SHOW ALL\n \n
\n )}\n
\n
\n )\n}\n\nconst MainContainer = styled.div`\n padding-top: 50px;\n padding-bottom: 20px;\n`\nconst GridContainer = styled.div`\n /* padding-top: 30px; */\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n\n column-gap: 16px;\n row-gap: 16px;\n /* height: 500px; */\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n grid-template-columns: 1fr 1fr;\n }\n`\nconst GridItem = styled.div`\n background-color: #d4d4d4;\n width: 100%;\n content: \"\";\n border-radius: 8px;\n height: 100%;\n`\n\nconst ButtonContainer = styled.div`\n margin: 0 auto;\n`\n","import React from \"react\"\nimport { ButtonSecondary } from \"../Buttons/Buttons\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport { SizeType } from \"../Buttons/Buttons\"\n\ninterface UniversityCourseBlockI {\n data: any\n}\n\nexport const UniversityCourseBlock: React.FC = ({ data }) => {\n const name = data.attrs[\"course-name\"]\n const description = data.attrs[\"course-description\"]\n const link = data.attrs[\"course-link\"]\n return (\n
\n
{name}
\n \n
\n \n Find out more\n \n
\n
\n )\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\n\ninterface IImageProps {\n data: any\n}\nconst PartnerLogo: React.FC = ({ data }) => {\n const image = data.attrs.image\n let jsonImage\n\n try {\n const rawGallery = decodeURIComponent(image)\n const jsonImageRaw = JSON.parse(rawGallery)\n jsonImage = jsonImageRaw.url\n } catch (e) {\n console.log(e)\n }\n if(jsonImage===undefined){\n try {\n jsonImage = image.sourceUrl\n } catch (e) {\n // console.log(e)\n }\n}\n return (\n \n \n \n )\n}\n\nexport default PartnerLogo\n\nconst Container = styled.div`\n display: flex;\n\n justify-content: center;\n /* align-items: center;\n vertical-align: center; */\n margin: 50px auto 80px;\n height: 175px;\n width: 350px;\n /* border: 4px solid black; */\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n width: 280px;\n }\n`\nconst IMG = styled.img`\n object-fit: fill;\n height: 100%;\n`\n","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport { RichTextContainer } from \"../LazyBlock/RichTextContainer\"\n\ninterface ICrossHeading {\n data: any\n}\n\nconst HowToGetThere: React.FC = ({ data }) => {\n const subtitle = data.attrs[\"subtitle\"]\n const title = data.attrs[\"title\"]\n const text1 = data.attrs[\"text-1\"]\n const text2 = data.attrs[\"text-2\"]\n const text3 = data.attrs[\"text-3\"]\n\n return (\n \n \n \n \n {subtitle} \n {title}\n \n\n \n \n \n \n \n \n \n )\n}\n\nexport default HowToGetThere\n\nconst HowToGetThereContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n //align-items: center;\n\n margin-bottom: 50px;\n @media (max-width: ${props => props.theme.breakpoints.lg}) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n margin-top: 32px;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 20px;\n }\n`\n\nconst BodyContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-column-gap: 80px;\n width: 100%;\n padding-top: 80px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n grid-template-columns: repeat(2, 1fr);\n width: 100%;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n grid-template-columns: repeat(1, 1fr);\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-top: 0px;\n }\n`\n\nconst CrossHeadingTitlesContainer = styled.div`\n width: 33%;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n }\n`\nconst BlackLine = styled.div`\n height: 2px;\n background-color: black;\n width: 260px;\n margin-bottom: 53px;\n`\nconst CrossHeadingSubtitle = styled.h6`\n z-index: 1;\n margin-bottom: 5px;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin-top: 15px;\n }\n`\n\nconst CrossHeadingTitle = styled.h4`\n z-index: 1;\n`\n","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\n\nimport { RichTextContainer } from \"../LazyBlock/RichTextContainer\"\n\ninterface ICrossHeading {\n data: any\n}\n\nconst CrossHeadingRichGrid: React.FC = ({ data }) => {\n const title = data.attrs[\"title\"]\n const text1 = data.attrs[\"text-1\"]\n const text2 = data.attrs[\"text-2\"]\n const text3 = data.attrs[\"text-3\"]\n const text4 = data.attrs[\"text-4\"]\n const text5 = data.attrs[\"text-5\"]\n const text6 = data.attrs[\"text-6\"]\n\n return (\n \n \n \n {title}\n \n\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default CrossHeadingRichGrid\n\nconst LocationContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n //align-items: center;\n\n margin-bottom: 50px;\n @media (max-width: ${props => props.theme.breakpoints.lg}) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin-top: 32px;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 20px;\n }\n`\n\nconst BodyContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-column-gap: 30px;\n width: 60%;\n padding-top: 10px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n grid-template-columns: repeat(2, 1fr);\n width: 100%;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n width: 100%;\n padding-top: 0px;\n }\n`\n\nconst TitlesContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: left;\n width: 40%;\n margin-top: 0;\n padding: 0px 0px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n padding: 10px 0px;\n }\n`\nconst Title = styled.h4`\n z-index: 1;\n`\n","import { Container } from \"@material-ui/core\"\nimport React from \"react\"\nimport styled from \"styled-components\"\nimport { Button, ButtonSecondary } from \"../Buttons/Buttons\"\n\nimport { RichTextContainer } from \"../LazyBlock/RichTextContainer\"\n\ninterface ICrossHeading {\n data: any\n}\n\nconst MapEvent: React.FC = ({ data }) => {\n const subtitle = data.attrs[\"sub-heading\"]\n const title = data.attrs[\"heading\"]\n const text1 = data.attrs[\"text-box\"]\n const coordinates = data.attrs[\"coordinates\"]\n const ctaUrl1 = data.attrs[\"cta-url-1\"]\n const ctaUrl2 = data.attrs[\"cta-url-2\"]\n const ctaText1 = data.attrs[\"cta-text-1\"]\n const ctaText2 = data.attrs[\"cta-text-2\"]\n\n const LngLat = coordinates\n\n const MapURL =\n \"https://www.google.com/maps/embed/v1/place?q=\" + LngLat + \"&key=AIzaSyCSAPHCcQKfCOW1lU7PA6mwFp9PiH7ujeI\"\n\n return (\n \n \n \n \n {subtitle} \n {title}\n \n {ctaText1 && (\n \n )}\n \n {ctaText2 && (\n \n {ctaText2}\n \n )}\n \n\n \n \n \n \n \n )\n}\n\nexport default MapEvent\n\nconst CrossHeadingContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n //align-items: center;\n\n margin-bottom: 50px;\n @media (max-width: ${props => props.theme.breakpoints.lg}) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n margin-top: 32px;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 20px;\n }\n`\n\nconst LeftColumn = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: left;\n align-items: left;\n\n width: 40%;\n\n padding: 0px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n padding: 10px 0px;\n }\n`\n\nconst MapContainer = styled.div`\n display: flex;\n grid-column-gap: 30px;\n width: 60%;\n height: 450px;\n\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-top: 0px;\n }\n`\n\nconst CrossHeadingTitlesContainer = styled.div``\n\nconst Gap = styled.div`\n height: 17px;\n`\nconst CrossHeadingSubtitle = styled.h6`\n z-index: 1;\n margin-bottom: 5px;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin-top: 15px;\n }\n`\n\nconst CrossHeadingTitle = styled.h4`\n z-index: 1;\n`\n\nconst BlackLine = styled.div`\n height: 2px;\n background-color: black;\n width: 260px;\n margin-bottom: 53px;\n`\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Button, SizeType } from \"./Buttons/Buttons\"\n\ninterface ISchedule {\n data\n}\n\nconst ScheduleDownload: React.FC = ({ data }) => {\n const file = JSON.parse(decodeURI(data.attrs.file))\n\n return (\n <>\n \n {/* Note this is named poorly but basically this all just acts as a placeholder */}\n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n {/* */}\n
\n
\n \n )\n}\n\nexport default ScheduleDownload\n\nconst CrossHeadingContainer = styled.div`\n /* border: 1px solid red; */\n display: flex;\n /* align-items: center; */\n\n position: relative;\n left: -80px;\n @media (max-width: ${props => props.theme.breakpoints.lg}) {\n left: 0px;\n align-items: left;\n }\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding-bottom: 0px;\n }\n`\n\nconst CrossHeadingTitlesContainer = styled.div<{ titleWidth: string }>`\n /* border: 1px solid red; */\n min-width: 300px;\n display: flex;\n flex-direction: column;\n margin-left: -80px;\n width: 100%;\n\n @media (min-width: 768px) {\n max-width: ${props => (props.titleWidth ? props.titleWidth : \"320px\")};\n }\n`\nconst CrossHeadingTitle = styled.h2`\n font-size: 50px;\n font-weight: 600;\n min-width: 320px;\n @media (max-width: 768px) {\n font-size: 30px;\n line-height: 33px;\n }\n`\nconst HeadingContainer = styled.div`\n display: flex;\n align-items: center;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n display: none;\n }\n`\nconst ButtonWrapper = styled.div`\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin: 0 auto;\n }\n`\n\nconst Cross = styled.div`\n max-width: 160px;\n max-height: 160px;\n width: 160px;\n /* height: 160px; */\n @media (max-width: 768px) {\n width: 124px;\n /* height: 124px; */\n }\n`\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { DateTime } from \"luxon\"\nimport { Button, SizeType } from \"./Buttons/Buttons\"\nimport { Link } from \"gatsby\"\nimport CrossIcon from \"../assets/svg/GFW_cross.svg\"\ninterface ISchedule {\n data\n}\n\nconst CountDownTimer: React.FC = ({ data }) => {\n const date = DateTime.fromISO(data.attrs.date)\n const [now, setNow] = useState(DateTime.now())\n const [diff, setDiff] = useState(date.diff(now, [\"days\", \"hours\", \"minutes\", \"seconds\"]))\n useEffect(() => {\n const timerID = setInterval(() => setNow(DateTime.now()), 1000)\n return () => {\n clearInterval(timerID)\n }\n }, [])\n useEffect(() => {\n let mouted = true\n if (mouted) {\n setDiff(date.diff(now, [\"days\", \"hours\", \"minutes\", \"seconds\"]))\n }\n return () => {\n mouted = false\n }\n }, [now])\n const secs = diff.seconds\n\n function doubleZero(number: number) {\n if (number === 0) {\n return \"00\"\n }\n if (number > 0 && number < 10) {\n return \"0\" + number\n } else {\n return number\n }\n }\n return (\n \n \n \n \n \n

\n GRADUATE FASHION WEEK 2021 COUNTDOWN IS ON\n

\n \n World's largest showcase of BA fashion LIVE |{\" \"}\n 12th - 18th June 2021 \n \n\n \n \n {doubleZero(diff.days)}\n DAYS\n \n\n \n {doubleZero(diff.hours)}\n HOURS\n \n \n :\n \n \n {doubleZero(diff.minutes)}\n MINUTES\n \n \n :\n \n \n {doubleZero(Math.floor(secs))}\n SECONDS\n \n \n {/* \n Already Registered? Sign In */}\n
\n
\n )\n}\n\nexport default CountDownTimer\n\nconst BlackBox = styled.div`\n z-index: -10;\n width: 100%;\n text-align: center;\n background-color: black;\n padding-top: 110px;\n padding-bottom: 77px;\n margin-bottom: 10px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n padding: 110px 20px 77px;\n }\n`\n\nconst ContentContainer = styled.div`\n margin: auto;\n max-width: 600px;\n position: relative;\n\n /* border:1px solid white; */\n`\nconst TimerContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 0 40px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n padding: 0 20px;\n }\n`\n\nconst NumberContainer = styled.div`\n color: white;\n flex: 3;\n`\nconst ColonContainer = styled.div`\n color: white;\n flex: 1;\n`\n\nconst NumberCountHeading = styled.h2`\n font-size: 100px !important;\n font-weight: bold;\n letter-spacing: 0;\n line-height: 65px;\n text-align: center;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 40px !important;\n line-height: 20px;\n }\n`\nconst NumberLabelHeading = styled.h3`\n font-weight: 400;\n font-size: 25px;\n letter-spacing: 0;\n line-height: 40px;\n text-align: center;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 20px !important;\n line-height: 20px;\n }\n`\n\nconst StyledCrossIcon = styled(CrossIcon)`\n height: 160px;\n width: 160px;\n`\n\nconst CrossContainer = styled.div`\n margin: auto;\n width: 100%;\n margin-bottom: -140px;\n z-index: -1;\n`\n\nconst SmallText = styled.p`\n font-size: 22px;\n font-weight: 600;\n line-height: 30px;\n\n > span {\n font-size: 24px !important;\n font-weight: 600 !important;\n line-height: 30px !important;\n }\n`\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { RichTextContainer } from \"./RichTextContainer\"\nimport { Container } from \"@material-ui/core\"\nimport Cross from \"../../assets/svg/GFW_cross.svg\"\nimport { Button, ButtonSecondary } from \"../Buttons/Buttons\"\nimport { getUser, isLoggedIn, setUser } from \"../../services/auth\"\ninterface IIndentedTextWithLargeImage {\n data: any\n}\n\nexport const HomePageSchedule: React.FC = ({ data }) => {\n const body1 = data.attrs[\"info-top\"]\n const body2 = data.attrs[\"info-bottom\"]\n const body3 = data.attrs[\"image-info\"]\n // const image = getImage(data.attrs.image)\n const btn1Text = data.attrs[\"top-button-text\"]\n const btn1URL = data.attrs[\"top-button-url\"]\n const btn2Text = data.attrs[\"bottom-button-text\"]\n const btn2URL = data.attrs[\"bottom-button-url\"]\n const btn3Text = data.attrs[\"button-3-text\"]\n const liveStream = data.attrs[\"live-stream\"]\n\n const [loggedIn, setIsLoggedIn] = useState(undefined)\n\n useEffect(() => {\n let mounted = true\n if (mounted) {\n setUser(getUser())\n setIsLoggedIn(isLoggedIn())\n }\n\n return () => {\n mounted = false\n }\n }, [])\n\n const image = data.attrs.image\n let jsonImage\n try {\n const rawGallery = decodeURIComponent(image)\n const jsonImageRaw = JSON.parse(rawGallery)\n jsonImage = jsonImageRaw.url\n } catch (e) {\n // console.log(e)\n }\n if(jsonImage===undefined){\n try {\n jsonImage = image.sourceUrl\n } catch (e) {\n // console.log(e)\n }\n}\n\n const imageOnLeft = true\n return (\n \n \n \n \n {btn1Text}\n \n \n \n \n \n \n \n \n {/* */}\n \n\n {/* {loggedIn ? (\n
\n ) : null} */}\n \n\n \n{/* \n {!loggedIn || loggedIn === undefined ? (\n \n ) : null} */}\n \n

{body3}

\n \n
\n
\n
\n )\n}\ninterface IAlignmentProps {\n imageLeft: boolean\n}\nconst AboutUsWrapper = styled.div`\n width: 100%;\n /* border: 1px solid red; */\n /* height: 600px; */\n margin: 30px auto 40px;\n display: flex;\n flex-direction: ${props => (props.imageLeft ? \"row-reverse\" : \"row\")};\n //justify-content: center;\n align-items: flex-start;\n padding-top: 60px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: ${props => (props.imageLeft ? \"column-reverse\" : \"column\")};\n align-items: flex-end;\n height: auto;\n width: 100%;\n padding-top: 0px;\n margin: 30px auto 10px;\n }\n`\nconst AboutUsImgContainer = styled.div`\n /* width: 50%; */\n overflow: hidden;\n /* border: 1px solid yellow; */\n padding: 120px auto;\n z-index: 2;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n padding: 0 auto;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n flex-direction: column;\n width: 100%;\n /* height: 485px; */\n margin: auto;\n margin-bottom: 20px;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n flex-direction: column;\n width: 100%;\n\n margin: auto;\n margin-bottom: 20px;\n }\n`\nconst IMG = styled.img`\n object-fit: contain;\n`\nconst AboutUsTextBox = styled.div`\n /* width: 40%; */\n min-height: wrap;\n display: flex;\n /* border: 1px solid blue; */\n flex-direction: column;\n justify-content: center;\n z-index: 2;\n padding: 40px 61px;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAgMAAADw5/WeAAAACVBMVEX6+vr4+Pjv7++npPQmAAAAKElEQVQI12NgCGBgZWBgEGBgZACzYWTo0tCoUAiJIs7gwMCCi02CXgD5agzBt66q6wAAAABJRU5ErkJggg==\");\n margin: 0 60px;\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n width: 100%;\n height: auto;\n padding: 30px 20px 20px 20px;\n margin: 0;\n align-items: flex-start;\n justify-content: space-between;\n }\n`\n\nconst LineCrossContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n width: 100%;\n margin: 13px auto;\n /* margin-bottom: 40px; */\n`\n\nconst Line = styled.div`\n content: \"\";\n\n width: 100%;\n flex: 1;\n height: 1px;\n border: none;\n background-color: ${props => props.theme.colors.turquoise};\n @media (max-width: 1156px) {\n width: 100px;\n }\n @media (max-width: 1024px) {\n width: 140px;\n }\n`\n","import React from \"react\"\nimport { RichTextContainer } from \"./RichTextContainer\"\n\ninterface UniversityCourseBlockI {\n data:\n | {\n name: string\n description: string\n }\n | any\n}\n\nexport const UniversityGraduatesBlock: React.FC = ({ data }) => {\n const name = data.attrs[\"heading\"]\n const description = data.attrs[\"graduates-intro\"]\n\n return (\n
\n
{name}
\n
\n \n
\n
\n )\n}\n","import React, { useEffect, useState, useRef} from \"react\"\nimport styled from \"styled-components\"\n\ninterface LiveStreamProps {\n data: any\n}\n\nexport const LiveStream: React.FC = ({ data }) => {\n const playerContainerRef = useRef(null);\n const [playerInitialized, setPlayerInitialized] = useState(false);\n\n useEffect(() => {\n if (!playerInitialized && playerContainerRef.current) {\n const vars = {\n clip_id: 'jdcthwgt7dc8',\n transparent: 'true',\n pause: '1',\n repeat: '',\n bg_color: '#FFFFFF',\n fs_mode: '2',\n no_controls: '',\n start_img: '0',\n start_volume: '34',\n close_button: '',\n brand_new_window: '1',\n auto_hide: '1',\n stretch_video: '',\n player_align: 'NONE',\n offset_x: '0',\n offset_y: '0',\n player_color_ratio: 0.6,\n skinAlpha: '50',\n colorBase: '#250864',\n colorIcon: '#FFFFFF',\n colorHighlight: '#7F54F8',\n direct: 'false',\n is_responsive: 'true',\n viewers_limit: 0,\n cc_position: 'bottom',\n cc_positionOffset: 70,\n cc_multiplier: 0.03,\n cc_textColor: '#FFFFFF',\n cc_textOutlineColor: '#FFFFFF',\n cc_bkgColor: '#000000',\n cc_bkgAlpha: 0.1,\n aspect_ratio: '16:9',\n play_button: '1',\n play_button_style: 'pulsing',\n sleek_player: '1',\n auto_play: '0',\n auto_play_type: 'unMute',\n floating_player: 'none',\n };\n // @ts-ignore\n const svp_player = new SVPDynamicPlayer(\n 'svp_playerjdcthwgt7dc8',\n '',\n '100%',\n '100%',\n { use_div: 'svp_playerjdcthwgt7dc8', skin: '3' },\n vars\n );\n\n svp_player.execute();\n\n setPlayerInitialized(true);\n }\n }, [playerInitialized]);\n\n return (\n \n {/*
\n
*/}\n
\n \n )\n}\n\nconst StyledDiv = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 40px;\n \n margin-top: 60px;\n padding-left: 16px;\n padding-right: 16px;\n margin-bottom: 30px;\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n margin-bottom: 0px;\n }\n`\n","import React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { Link } from \"gatsby\"\nimport Img from \"gatsby-image\"\nimport { Card } from \"@material-ui/core\"\n\ninterface IportfolioCard {\n img?: any\n name: string\n slug: string\n desc: string\n tags?: string[]\n color?: string\n}\n\nconst PortfolioCarouselCard: React.FC = ({ img, name, desc, slug, tags, color }: IportfolioCard) => {\n const [shadow, setShadow] = useState({ front: 0, back: 0 })\n const onMouseOver = () => setShadow({ front: 15, back: 5 })\n const onMouseOut = () => setShadow({ front: 0, back: 0 })\n return (\n \n \n \n \n \n \n {tags && (\n \n {tags.slice(0, 2).map((item, i) => {\n return (\n \n {item}{\" \"}\n \n )\n })}\n \n )}\n {name}\n {desc}\n \n \n \n )\n}\n\nexport default PortfolioCarouselCard\n\nconst StyledCard = styled.div`\n border-radius: 0px !important;\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n /* border: 1px solid red; */\n height: 100%;\n`\n\nconst PortfolioCardContainer = styled(Link)`\n margin: 10px 5px;\n background-color: #ffffff;\n &:hover {\n text-decoration: none;\n }\n max-width: 315px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n max-width: 100%;\n margin: 10px 5px;\n }\n`\nconst ImgContainer = styled(Card)`\n //width: 315px;\n width: 100%;\n height: 325px;\n max-height: 325px;\n border-top: 4px solid ${props => (props.color ? props.color : \"black\")};\n border-radius: 0px !important;\n & > .gatsby-image-wrapper {\n z-index: 1;\n }\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n max-width: 100%;\n height: auto;\n margin: 0 0px;\n }\n`\nconst PortfolioInfoBox = styled(Card)`\n padding: 21px 27px 26px;\n background: white;\n border-radius: 0px !important;\n height: 185px;\n width: 295px;\n\n background-color: #ffffff;\n border: 1px solid #e3e3e3;\n /* box-shadow: 0 0 5px 0 rgba(123, 123, 123, 0.2); */\n /* transition: transform 1s ease; */\n margin-top: -100px;\n margin-right: 0;\n z-index: 9;\n\n @media (max-width: ${props => props.theme.breakpoints.md}) {\n padding: 12px 13px;\n margin: -40px 0px 0;\n width: 95%;\n }\n`\n\nconst PortfolioName = styled.p`\n font-size: 20px;\n font-weight: 500;\n letter-spacing: 0;\n line-height: 26px;\n height: 38px;\n margin-bottom: 18px;\n color: black;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 16px;\n\n line-height: 21px;\n }\n`\n\nconst PortfolioDesc = styled.p`\n color: #4a4a4a !important;\n font-size: 18px;\n line-height: 28px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 14px;\n\n line-height: 24px;\n }\n`\nconst TagContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n padding-right: 0%;\n }\n`\ninterface IColor {\n color: string\n}\nconst Tag = styled.b`\n text-align: center;\n text-transform: uppercase;\n background-color: ${props => (props.color ? props.color : \"black\")};\n color: white;\n font-size: 0.7rem;\n line-height: 0.7rem;\n font-weight: 400;\n letter-spacing: 1px;\n margin: 0 5px 5px 0;\n /* height: 20px; */\n width: auto;\n padding: 4px 8px;\n border-radius: 10px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 10px;\n }\n`\n","import React, { useLayoutEffect, useState, FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\n// import Cursor from \"./Cursor\"\n\nimport SwiperCore, { Navigation, Scrollbar } from \"swiper\"\nimport { Swiper, SwiperSlide } from \"swiper/react\"\n\nimport PortfolioCarouselCard from \"./PortfoliosTemplate/PortfolioCarouselCard\"\n\n// install Swiper components\nSwiperCore.use([Navigation, Scrollbar])\n\ninterface ICarouselItems {\n tag: string\n studentName: string\n url: string\n desc: string\n color: string\n}\n\ninterface CarouselDragProps {\n id: string\n data: Array\n color?: string\n}\nconst CarouselDrag: FunctionComponent = ({ id, data, color }) => {\n const [slides, setSlides] = useState(4)\n const [padding, setPadding] = useState(20)\n const [charLimit, setCharLimit] = React.useState(140)\n\n const formatText = (text: string) => {\n if (text.length < charLimit) {\n return text\n }\n return text.substr(0, charLimit) + \"...\"\n }\n useLayoutEffect(() => {\n const hideArrows = () => {\n if (typeof window !== \"undefined\") {\n const nextBtn = document.querySelector(\".swiper-button-next\")\n const prevBtn = document.querySelector(\".swiper-button-prev\")\n if (window.innerWidth >= 1200 && data.length <= 3) {\n nextBtn.style.display = \"none\"\n prevBtn.style.display = \"none\"\n } else if (window.innerWidth < 1200 && data.length > 3) {\n nextBtn.style.display = \"inline-block\"\n prevBtn.style.display = \"inline-block\"\n }\n }\n }\n\n function updateSize() {\n if (typeof window !== \"undefined\") {\n if (window.innerWidth <= 767) {\n setSlides(window.innerWidth / (320 + padding * 3))\n } else if (window.innerWidth >= 768 && window.innerWidth < 1024) {\n setSlides(window.innerWidth / (360 + padding * 2.6))\n } else if (window.innerWidth >= 1024 && window.innerWidth < 1200) {\n setSlides(window.innerWidth / (360 + padding * 2.5))\n } else {\n setSlides(3.05)\n }\n }\n }\n window.addEventListener(\"resize\", updateSize)\n updateSize()\n return () => {\n window.removeEventListener(\"resize\", updateSize)\n }\n }, [])\n\n return (\n \n {id}\n \n \n \n {data.map((item, i) => {\n let r = Math.random().toString(36).substring(7)\n let img\n\n try{\n img = item.student_profile.searchImage.localFile.childImageSharp.fluid\n }catch(e){\n // console.log(e)\n }\n\n return (\n \n \n \n )\n })}\n \n \n \n \n )\n}\n\nexport default CarouselDrag\n\nconst FullWidth = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`\n\nconst Container = styled.section`\n padding: 25px 20px 50px;\n overflow: hidden;\n\n @media (min-width: 768px) {\n padding: 50px 20px;\n }\n @media (min-width: 1024px) {\n padding: 50px 3%;\n }\n\n .swiper-container {\n overflow: visible;\n transition: transform 0.8s ease;\n width: 100%;\n margin-right: auto;\n transition: transform 0.4s ease;\n @media (min-width: 1024px) {\n width: 100%;\n }\n }\n .carousel-drag-slide {\n /* padding: 35px 37px 37px;\n background: white;\n width: 320px !important;\n min-width: 320px !important;\n height: auto;\n transition: transform 1s ease;\n margin-right: 20px;\n border: 1px solid #eeeeee;\n border-radius: 4px;\n box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.05); */\n margin: auto 10px;\n\n @media (min-width: 768px) {\n padding: 0px;\n width: 315px !important;\n min-width: 315px !important;\n /* display: flex;\n flex-direction: column;\n align-items: flex-end; */\n }\n &:hover .image__container {\n box-shadow: 0 0 26px 0 rgba(0, 0, 0, 0.2);\n }\n &:hover .text__container {\n box-shadow: 0 0 26px 0 rgba(0, 0, 0, 0.2);\n }\n }\n\n .swiper-scrollbar {\n position: absolute;\n height: 1px;\n width: calc(100vw - 140px);\n background: ${props => props.theme.colors.turquoise};\n left: 100px;\n bottom: -40px;\n @media screen and (min-width: 1024px) {\n width: calc(100vw - 6% - 100px);\n }\n @media screen and (min-width: 1200px) {\n width: 92%;\n }\n }\n .swiper-scrollbar-drag {\n height: 3px;\n position: absolute;\n top: -1px;\n background: ${props => props.theme.colors.turquoise};\n }\n\n .swiper-button-next {\n margin-left: 18px;\n left: 15px;\n }\n\n .swiper-button-prev {\n transform: rotate(-180deg);\n left: 0;\n }\n .swiper-button-next::after,\n .swiper-button-prev::after {\n opacity: 0;\n }\n .swiper-button-next,\n .swiper-button-prev {\n position: absolute;\n top: auto;\n bottom: -50px;\n width: 4.9rem;\n height: 1rem;\n margin: 0;\n }\n .swiper-button-next {\n left: 50px;\n }\n\n .swiper-button-next,\n .swiper-button-prev {\n background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ny44NCAxMS4yNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwZGIwZTc7ZmlsbC1ydWxlOmV2ZW5vZGQ7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9ImNscy0xIiBkPSJNNDUuMzgsNiw0MS4xNiwxLjg0bDEtMSw1LjcsNS42Mi01LjcsNS42Mi0xLTFMNDUuMzgsN0gwVjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0wLjg4KSIvPjwvc3ZnPg==);\n background-repeat: no-repeat;\n /* background-color: ${props => props.theme.colors.turquoise}; */\n background-size: 100% auto;\n background-position: center;\n width: 45px;\n height: 21px;\n }\n .swiper-button-next:hover,\n .swiper-button-prev:hover {\n /* background: url(../assets/svg/long-arrow-right.svg); */\n background-repeat: no-repeat;\n background-size: 100% auto;\n\n background-position: center;\n }\n .swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n }\n`\n\nconst SwiperContainer = styled.div`\n cursor: grab;\n width: 100%;\n max-width: 1140px;\n margin: 0 auto;\n position: relative;\n`\nconst SwipperWrapper = styled.div`\n display: flex;\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n box-sizing: content-box;\n`\n\nconst Tag = styled.span`\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.76px;\n line-height: 14px;\n padding: 1px 10px 3px 10px;\n background-color: ${props => (props.color ? props.color : props.theme.colors.purple)};\n color: white;\n border-radius: 20px;\n\n @media (max-width: 768px) {\n font-size: 10px;\n\n letter-spacing: 0.64px;\n line-height: 10px;\n }\n`\n\nconst Student = styled.h6`\n font-size: 20px;\n font-weight: 500;\n letter-spacing: 0;\n line-height: 25px;\n margin-bottom: 32px;\n margin-top: 10px;\n @media (max-width: 768px) {\n font-size: 16px;\n\n line-height: 21px;\n }\n`\n\nconst Desc = styled.p`\n font-size: 18px;\n letter-spacing: 0;\n line-height: 26px;\n color: #4a4a4a;\n font-weight: 400;\n @media (max-width: 768px) {\n font-size: 14px;\n line-height: 24px;\n }\n`\ninterface ILinkWrapper {\n noMarginTop?: boolean\n}\nconst InlineLinkWrapper = styled.div`\n margin-top: 22px;\n display: flex;\n\n margin-bottom: 30px;\n @media (min-width: 1024px) {\n margin-top: 47px;\n }\n @media (min-width: 1200px) {\n margin-top: ${props => (props.noMarginTop ? \"10px\" : \"47px\")};\n }\n`\n\nconst H4FeatureProjects = styled.h4`\n line-height: 42px;\n margin-bottom: 14px;\n @media (max-width: 768px) {\n font-size: 20px;\n }\n`\nconst CarouselImgContainer = styled.div`\n width: 315px;\n height: 325px;\n border-top: 4px solid ${props => (props.color ? props.color : props.theme.colors.secondary)};\n & > .gatsby-image-wrapper {\n z-index: -1;\n }\n /* &:hover {\n box-shadow: 0 0 26px 0 rgba(0, 0, 0, 0.2);\n } */\n`\nconst CarouselTextContainer = styled.div`\n padding: 35px 37px 37px;\n background: white;\n height: 185px;\n width: 295px;\n background-color: #ffffff;\n box-shadow: 0 0 5px 0 rgba(123, 123, 123, 0.2);\n transition: transform 1s ease;\n margin-top: -100px;\n z-index: 10;\n @media (max-width: 768px) {\n padding: 19px 23px;\n }\n`\n","import { Container } from \"@material-ui/core\"\nimport { graphql, StaticQuery } from \"gatsby\"\nimport React from \"react\"\nimport Carousel from \"../Carousel\"\n\n\nexport const FeaturedPortfoliosCarouselSingle = ({ data }) => {\n\n const displayPortfolios = []\n let heading =\"Accessory Design\"\n try{\n heading = data.attrs.specialism\n }catch(e){\n // console.log(e)\n }\n\n const colours = [\"#0DB0E7\", \"#E72569\",\"#47BFAF\",\"#000000\"]\n\n return (\n\n\n {\n\n let portfolios = []\n\n try{\n portfolios = data.allWpPortfolio.edges.map(v => v.node)\n }catch(e){\n // console.log(e)\n }\n\n portfolios.map((item, index) => {\n const specs = item.student_profile.specialism !== null ? item.student_profile.specialism : []\n try{\n if (specs.includes(heading)) {\n\n displayPortfolios.push(item)\n }\n }catch(e){\n // console.log(e)\n }\n })\n return ( \n Math.random() - 0.5)}\n >\n\n )\n }}\n />\n\n\n )\n}\n\nexport default FeaturedPortfoliosCarouselSingle\n","import React, { useLayoutEffect, useState, FunctionComponent } from \"react\"\nimport { graphql, Link, StaticQuery } from \"gatsby\"\nimport styled from \"styled-components\"\nimport Img from \"gatsby-image\"\nimport { Swiper, SwiperSlide } from \"swiper/react\"\nimport { Container } from \"@material-ui/core\"\nimport CrossIcon from \"../../assets/svg/GFW_cross.svg\"\n\n\n\ninterface IImage {\n sourceUrl: string\n}\n\ninterface IKeynoteprops {\n speakers: any[]\n}\nconst FeaturedImageScroll: FunctionComponent= () => {\n const [slides, setSlides] = useState(3)\n const [currentSlide, setCurrentSlide] = useState(0)\n\n useLayoutEffect(() => {\n function updateSize() {\n if (typeof window !== \"undefined\") {\n if (window.innerWidth <= 767) {\n setSlides(1.4)\n } else {\n setSlides(3)\n }\n }\n }\n window.addEventListener(\"resize\", updateSize)\n updateSize()\n return () => {\n window.removeEventListener(\"resize\", updateSize)\n }\n }, [])\n\n const handleChangeSlide = (event, value) => {\n //setCurrentSlide(event.activeIndex)\n setCurrentSlide(event.realIndex)\n }\n\n return (\n {\n \n let keynoteSpeakers = []\n try{\n keynoteSpeakers = data.allWpKeynoteSpeaker.edges.map(v => v.node)\n }catch(e){\n // console.log(e)\n }\n return(\n \n \n GUEST SPEAKERS\n

KEYNOTE SPEAKERS

\n
\n \n \n {keynoteSpeakers.map((item, i) => {\n return (\n item && (\n \n \n <>\n \n \n \n \n {item.keynoteSpeakers.role}\n {item.keynoteSpeakers.name}\n {item.keynoteSpeakers.description}.\n {item.keynoteSpeakers.date}.\n Find out more\n \n \n \n )\n )\n })}\n \n \n
\n )\n }}\n/> )\n}\n\nexport default FeaturedImageScroll\n\nconst HeightPlaceholder = styled.div`\n min-height: 300px;\n`\nconst Container2 = styled.section`\n width: 100%;\n margin: 0px auto;\n\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n }\n .swiper-container {\n padding: 0 0 100px; //so the scroll bar is visible bellow the slides\n transition: transform 0.8s ease;\n width: 100%;\n height: auto;\n transition: transform 0.4s ease;\n @media (min-width: 1024px) {\n width: 100%;\n }\n }\n .carousel-drag-slide {\n margin: auto; //for horizontal centering\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n margin: 0 auto;\n }\n }\n\n .swiper-scrollbar {\n position: absolute;\n height: 1px;\n //width: calc(100vw - 140px);\n width: 30%;\n background: ${props => props.theme.colors.turquoise};\n left: 40%;\n bottom: 68px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n width: 60%;\n left: 30%;\n }\n }\n .swiper-scrollbar-drag {\n height: 3px;\n // width: 50px;\n // position: absolute;\n top: -1px;\n background: ${props => props.theme.colors.turquoise};\n }\n\n .swiper-button-next {\n //margin-left: 18px;\n left: 35%;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n left: 15%;\n }\n }\n\n .swiper-button-prev {\n transform: rotate(-180deg);\n left: 30%;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n left: 0%;\n }\n }\n .swiper-button-next::after,\n .swiper-button-prev::after {\n opacity: 0;\n }\n .swiper-button-next,\n .swiper-button-prev {\n position: absolute;\n top: auto;\n bottom: 60px;\n width: 4.9rem;\n height: 1rem;\n margin: 0;\n }\n\n .swiper-button-next,\n .swiper-button-prev {\n background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ny44NCAxMS4yNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwZGIwZTc7ZmlsbC1ydWxlOmV2ZW5vZGQ7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9ImNscy0xIiBkPSJNNDUuMzgsNiw0MS4xNiwxLjg0bDEtMSw1LjcsNS42Mi01LjcsNS42Mi0xLTFMNDUuMzgsN0gwVjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0wLjg4KSIvPjwvc3ZnPg==);\n background-repeat: no-repeat;\n /* background-color: ${props => props.theme.colors.turquoise}; */\n background-size: 100% auto;\n background-position: center;\n width: 45px;\n height: 21px;\n }\n .swiper-button-next:hover,\n .swiper-button-prev:hover {\n /* background: url(../assets/svg/long-arrow-right.svg); */\n background-repeat: no-repeat;\n background-size: 100% auto;\n\n background-position: center;\n }\n .swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n }\n`\n\ninterface TextContainerInterface {\n center: boolean\n}\nconst TextContainer = styled.div`\n display: flex;\n width: 100%;\n flex-direction: column;\n padding: 0 20px;\n align-items: center;\n margin: 0px auto 0;\n\n > * {\n opacity: ${props => (props.center ? 1 : 0)};\n transition: opacity 0.5s;\n }\n`\n\nconst Name = styled.h4`\n color: black;\n font-size: 26px;\n`\nconst SpeakerInfo = styled.p`\n color: black;\n font-size: 18px;\n font-weight: 400;\n letter-spacing: 2px;\n text-align: center;\n margin-bottom: 15px;\n`\nconst TopTextContainer = styled.div`\n display: flex;\n width: 100%;\n flex-direction: column;\n\n align-items: center;\n margin: 80px auto 0;\n`\nconst Tag = styled.b`\n text-align: center;\n text-transform: uppercase;\n background-color: ${props => props.theme.colors.turquoise};\n color: white;\n font-size: 0.7rem;\n font-weight: 400;\n line-height: 18px;\n letter-spacing: 1px;\n margin: 10px 5px 5px 0;\n width: auto;\n padding: 0px 8px 0px;\n border-radius: 10px;\n @media (max-width: ${props => props.theme.breakpoints.sm}) {\n font-size: 10px;\n }\n`\n\nconst CrossIconContainer = styled.div`\n width: 100%;\n height: 40px;\n display: flex;\n align-items: center;\n`\nconst Cross = styled(CrossIcon)`\n height: 80px;\n width: 80px;\n position: relative;\n top: -20px;\n margin: 0 auto;\n`\nconst SmallHeading = styled.h6`\n font-size: 14px;\n color: black;\n margin-bottom: 0px;\n font-weight: medium;\n`\n","/* eslint-disable react/display-name */\nimport { parse } from \"@wordpress/block-serialization-default-parser\"\nimport React from \"react\"\nimport CrossHeading from \"../components/CrossHeading\"\nimport CrossHeadingTwo from \"../components/CrossHeadingTwo\"\nimport CrossHeadingRichGrid from \"../components/ContactUs/CrossHeadingRIchGrid\"\nimport { FactBanner } from \"../components/LazyBlock/FactBanner\"\nimport ImageWithSplitTextOverlap from \"../components/LazyBlock/ImageWithSplitTextOverlap\"\nimport { IndentedTextWithLargeImage } from \"../components/LazyBlock/IndentedTextWithLargeImage\"\nimport { PartnershipGallery } from \"../components/LazyBlock/Partnershipgallery\"\nimport { RichTextContainer } from \"../components/LazyBlock/RichTextContainer\"\nimport { SmallTextWithGallery } from \"../components/LazyBlock/SmallTextWithGallery\"\nimport { SplitImageVideoWithText } from \"../components/LazyBlock/SplitImageVideoWithText\"\nimport { TextWithSplitImageOverlap } from \"../components/LazyBlock/TextWithSplitImageOverlap\"\nimport { ThumbnailGallery } from \"../components/LazyBlock/ThumbnailGallery\"\nimport { UniversityCourseBlock } from \"../components/LazyBlock/UniversityCourseBlock\"\nimport PartnerLogo from \"../components/PartnerLogo\"\nimport HowToGetThere from \"../components/ContactUs/HowToGetThere\"\nimport Locations from \"../components/ContactUs/Locations\"\nimport MapEvent from \"../components/ContactUs/MapEvent\"\nimport { VideoLazyBlock } from \"../components/LazyBlock/VideoLazyBlock\"\nimport ScheduleDownload from \"../components/ScheduleDownload\"\nimport CountDownTimer from \"../components/CountDownTimer\"\nimport { HomePageSchedule } from \"../components/LazyBlock/HomePageSchedule\"\nimport { UniversityGraduatesBlock } from \"../components/LazyBlock/UniversityGraduatesBlock\"\nimport { LiveStream } from \"../components/LazyBlock/LiveStream\"\nimport { v4 as uuidv4 } from 'uuid';\nimport FeaturedPortfoliosCarouselSingle from \"../components/PortfoliosTemplate/FeaturedPortfoliosCarouselSingle\"\nimport KeynoteSpeakers from \"../components/PortfoliosTemplate/KeynoteSpeakers\"\ninterface LazyBlockFactoryI {\n lazyBlocks: any\n pageTitle: string\n}\n\nexport function LazyBlockFactory(lazyBlocks, pageTitle) {\n const lazyBlocksData = parse(lazyBlocks)\n const stuff = lazyBlocksData.map(v => {\n try {\n return LazyBlock[v.blockName](v)\n } catch (e) {\n console.error(e)\n return (\n
\n

Lazy block error on: {v.blockName}

\n
\n )\n }\n })\n return stuff\n}\nconst LazyBlock = {\n \"lazyblock/split-image-video-with-text\": block => ,\n \"lazyblock/indented-text-with-large-image\": block => ,\n \"lazyblock/partner-logo\": block => ,\n \"lazyblock/home-page-schedule\": block => ,\n \"lazyblock/large-cross-with-intro-paragraph\": block => ,\n \"lazyblock/large-cross-with-two-intro-paragraph\": block => ,\n \"lazyblock/contact-us-links\": block => ,\n \"lazyblock/text-with-split-image-overlap\": block => ,\n \"lazyblock/image-with-split-text-overlap\": block => ,\n \"core/embed\": block => ,\n \"lazyblock/facts-banner\": block => ,\n \"lazyblock/small-text-with-gallery\": block => ,\n \"lazyblock/partnership-gallery\": block => ,\n \"lazyblock/university-course-block\": block => ,\n \"lazyblock/university-graduates-block\": block => ,\n \"lazyblock/travel-links\": block => ,\n \"lazyblock/locations\": block => ,\n \"lazyblock/gfw-address\": block => ,\n \"lazyblock/thumbnail-gallery\": block => ,\n \"lazyblock/schedule-download\": block => ,\n \"lazyblock/count-down-timer\": block => ,\n \"lazyblock/live-stream\": block => ,\n \"core/heading\": block => ,\n \"core/separator\": block => ,\n \"core/paragraph\": block => ,\n \"core/list\": block => ,\n \"lazyblock/event-schedule-unit\": block => <>,\n \"lazyblock/featured-portfolio-carousel\": block => ,\n \"lazyblock/key-note-speakers-carousel\": block => ,\n null: () => \"} />\n}\n"],"names":["document","offset","output","stack","tokenizer","Block","blockName","attrs","innerBlocks","innerHTML","innerContent","Freeform","parse","doc","lastIndex","proceed","next","matches","exec","startedAt","index","_matches","match","closerMatch","namespaceMatch","nameMatch","attrsMatch","voidMatch","length","isCloser","isVoid","name","hasAttrs","input","JSON","e","parseJSON","nextToken","_next","tokenType","startOffset","tokenLength","stackDepth","leadingHtmlStart","addFreeform","addBlockFromStack","push","substr","addInnerBlock","block","tokenStart","prevOffset","Frame","stackTop","pop","html","rawLength","lastOffset","parent","endOffset","_stack$pop","data","subtitle","title","heading","text","CrossHeadingContainer","HeadingContainer","Cross","CrossHeadingTitlesContainer","CrossHeadingSubtitle","CrossHeadingTitle","CrossHeadingText","styled","Container","props","theme","breakpoints","md","CrossIcon","text1","text2","text3","text4","LeftColumn","BodyContainer","BodyTop","RichTextContainer","richText","BodyBottom","lg","sm","FactBanner","richText1","richText2","richText3","maxWidth","InnerContainer","StatCard","LineCrossContainer","Line","width","height","colors","turquoise","IndentedTextWithLargeImage","jsonImage","body","imageOnLeft","image","rawGallery","decodeURIComponent","url","undefined","sourceUrl","AboutUsWrapper","imageLeft","AboutUsTextBox","Subtitle","AboutUsImgContainer","IMG","src","PartnerGalleryItem","imageData","setModalOpen","setCardNumber","ImageContainer","onClick","GalleryCaroselPopup","dotWidth","dotPosition","modalOpen","cardNumber","MyModal","open","ModalContent","StyledCard","stopPropagation","IconButtonContainer","IconButton","Close","ArrowContainer","SingleArrowContainer","style","marginRight","BarContainer","Bar","BarDot","barWidth","barPosition","CaptionContainer","caption","CounterContainer","className","Card","useStyles","makeStyles","paper","position","minWidth","backgroundColor","palette","background","border","boxShadow","shadows","padding","PartnershipGallery","jsonGallery","pairs","headline","gallery","useTheme","useState","reduce","result","value","array","slice","React","top","left","transform","handleOpen","MainContainer","VideoContainer","StyledSwiper","spaceBetween","slidesPerView","navigation","scrollbar","hide","map","v","i","key","StyledCardContainer","Swiper","SmallTextWithGallery","MainGrid","TextWithSplitImageOverlap","catLabel","catLink","alt","rawImage","LazyLoadImage","effect","ButtonSecondaryAboutUs","customwidth","to","Background","ButtonSecondary","ThumbnailGalleryItem","ThumbnailGallery","blockData","numberShowing","setNumberShowing","GridContainer","marginTop","size","SizeType","UniversityCourseBlock","description","link","paddingTop","fontSize","marginBottom","target","console","log","HowToGetThereContainer","BlackLine","text5","text6","LocationContainer","TitlesContainer","Title","coordinates","ctaUrl1","ctaUrl2","ctaText1","ctaText2","MapURL","Gap","secondary","MapContainer","loading","allowFullScreen","frameBorder","file","decodeURI","ButtonWrapper","href","download","textDecoration","titleWidth","date","DateTime","now","setNow","diff","setDiff","useEffect","timerID","setInterval","clearInterval","mouted","secs","seconds","doubleZero","number","BlackBox","ContentContainer","CrossContainer","StyledCrossIcon","color","zIndex","SmallText","TimerContainer","NumberContainer","NumberCountHeading","days","NumberLabelHeading","hours","ColonContainer","minutes","Math","floor","HomePageSchedule","body1","body2","body3","btn1Text","btn1URL","btn2Text","btn2URL","btn3Text","setIsLoggedIn","mounted","setUser","getUser","isLoggedIn","UniversityGraduatesBlock","LiveStream","playerContainerRef","useRef","playerInitialized","setPlayerInitialized","current","SVPDynamicPlayer","use_div","skin","clip_id","transparent","pause","repeat","bg_color","fs_mode","no_controls","start_img","start_volume","close_button","brand_new_window","auto_hide","stretch_video","player_align","offset_x","offset_y","player_color_ratio","skinAlpha","colorBase","colorIcon","colorHighlight","direct","is_responsive","viewers_limit","cc_position","cc_positionOffset","cc_multiplier","cc_textColor","cc_textOutlineColor","cc_bkgColor","cc_bkgAlpha","aspect_ratio","play_button","play_button_style","sleek_player","auto_play","auto_play_type","floating_player","execute","StyledDiv","display","hidden","ref","id","img","desc","slug","tags","front","back","shadow","setShadow","PortfolioCardContainer","onMouseOver","onMouseOut","ImgContainer","elevation","fluid","imgStyle","objectFit","PortfolioInfoBox","TagContainer","item","Tag","PortfolioName","PortfolioDesc","Link","SwiperCore","Navigation","Scrollbar","setSlides","useLayoutEffect","updateSize","window","innerWidth","addEventListener","removeEventListener","H4FeatureProjects","SwiperContainer","SwipperWrapper","r","random","toString","substring","student_profile","searchImage","localFile","childImageSharp","studentName","student_portfolio","aboutMeHeading","specialism","purple","noMarginTop","displayPortfolios","colours","StaticQuery","query","render","portfolios","allWpPortfolio","edges","node","specs","includes","Carousel","sort","slides","currentSlide","setCurrentSlide","handleChangeSlide","event","realIndex","keynoteSpeakers","allWpKeynoteSpeaker","TopTextContainer","SmallHeading","Container2","loop","coverflowEffect","scale","rotate","depth","modifier","slideShadows","centeredSlides","onSlideChange","featuredImage","CrossIconContainer","TextContainer","center","role","Name","SpeakerInfo","LazyBlockFactory","lazyBlocks","pageTitle","LazyBlock","error","uuidv4","SplitImageVideoWithText","CrossHeadingTwo","ImageWithSplitTextOverlap","VideoLazyBlock","Locations","KeynoteSpeakers","null"],"sourceRoot":""}