{"version":3,"sources":["components/Header.js","components/Footer.js","components/showcase/VideoEmbed.js","components/AboutPage.js","components/ArtistMenuOption.js","components/ArtistsMenu.js","components/showcase/ArtistProfile.js","components/showcase/Contact.js","components/artists/James.js","components/artists/Jack.js","components/artists/Tim.js","components/artists/Jodie.js","components/artists/Vincent.js","components/artists/Lemayrt.js","components/artists/Patrick.js","components/artists/Omar.js","components/artists/Molly.js","components/artists/Jiaxian.js","components/artists/Chonlachat.js","components/ArtistShowcase.js","components/Canvas.js","artistDetails.js","components/Sketchpad.js","components/CommentForm.js","components/SubmissionsGallery.js","components/GuestBook.js","components/CollagePhoto.js","components/Collage.js","App.js","reportWebVitals.js","index.js"],"names":["Header","className","src","alt","onClick","this","props","toggleAboutPage","React","Component","Footer","VideoEmbed","state","playerHeight","window","innerWidth","width","height","url","config","youtube","playerVars","controls","fs","dotsLeft","subtitle","AboutPage","href","style","fontSize","fontWeight","letterSpacing","ArtistMenuOption","handleClick","bind","handleMouseEnter","handleMouseLeave","angleOffset","Math","random","xBasis","menuOpenStyles","opacity","transform","transition","pointerEvents","menuClosedStyles","setActiveArtist","name","setHoveredArtist","resetHoveredArtist","styling","isMenuOpen","hoveredArtist","onMouseEnter","onMouseLeave","ArtistsMenu","setState","artistMenuOptions","artistDetails","map","artist","ArtistProfile","children","Contact","email","target","rel","class","linkedin","instagram","twitter","github","website","James","Jack","Tim","marginTop","images","Jodie","photoIndex","lightboxIsOpen","openLightbox","event","parseInt","getAttribute","number","cursor","mainSrc","nextSrc","length","prevSrc","onCloseRequest","onMovePrevRequest","onMoveNextRequest","Vincent","Lemayrt","Patrick","Omar","Molly","Jiaxian","Chonlachat","ArtistShowcase","artistSelected","scrollTo","artistContent","removeActiveArtist","Canvas","mousePressedDown","brushPressedDown","brushLifted","brushMoved","ctx","canvasRef","current","getContext","fillStyle","fillRect","canvas","boundingRectangle","currentTarget","getBoundingClientRect","beginPath","brushColor","hex","arc","clientX","x","clientY","y","brushSize","PI","fill","paint","nativeEvent","which","ref","id","onMouseDown","onMouseUp","onMouseOut","onMouseMove","ARTIST_DETAILS","image","Sketchpad","isOpen","color","toColor","createRef","toggleGuestbookDisplay","updateColorPicker","handleBrushSizeChange","submitSketch","newColor","value","xhr","XMLHttpRequest","prompt","open","setRequestHeader","onreadystatechange","readyState","status","alert","POST_DATA","document","getElementById","toDataURL","join","send","closeSketchpad","artistOptions","selected","brushPreviewStyles","backgroundColor","type","min","max","onChange","step","hideHEX","CommentForm","submitComment","closeCommentForm","placeholder","maxLength","SubmissionsGallery","selectedArtist","showComments","showDrawings","drawings","comments","toggleComments","toggleDrawings","selectArtist","fetch","then","response","json","data","feed","i","recipient","for","toLowerCase","push","body","timef","splice","closeSubmissionsGallery","defaultChecked","Guestbook","sketchpadOpen","commentFormOpen","submissionsGalleryOpen","toggleSketchpadDisplay","toggleCommentFormDisplay","toggleSubmissionsGalleryDisplay","setNoScroll","CollagePhoto","hoverDisplayStyles","hoverHideStyles","artistName","replace","photoHoverStyling","selectionHoverStyling","collagePhotoClassNames","zIndex","photo","Collage","mobilePhoto","collagePhotos","mobile","App","isArtistSelected","noScroll","showAboutPage","artistURL","location","pathname","substring","overflowY","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.2071a414.chunk.js","sourcesContent":["import React from 'react';\n\nclass Header extends React.Component {\n render() {\n return (\n
\n
\n \"Galvanised\n
\n
\n

Digital Media Arts 2021

\n

Master's Degree Exhibition

\n

University of Brighton

\n \n
\n
\n );\n }\n}\n\nexport default Header;","import React from 'react';\n\nclass Footer extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default Footer;","import React from 'react';\nimport ReactPlayer from 'react-player/lazy';\n\nclass VideoEmbed extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n\n let playerHeight = \"200px\";\n if (window.innerWidth > 500){\n playerHeight = \"360px\";\n }\n\n return (\n
\n \n { this.props.dotsLeft ?
: null }\n { this.props.subtitle ?
{this.props.subtitle}
: null }\n
\n );\n }\n}\n\nexport default VideoEmbed;\n","import React from 'react';\nimport VideoEmbed from './showcase/VideoEmbed';\n\nclass AboutPage extends React.Component {\n\n render() {\n\n return (\n
\n
\n
Return to Homepage ✖
\n
\n
\n

About Galvanised

\n \"Galvanized\n \n

\n Galvanised is an online exhibition displaying the work of 13 digital media artists completing their degrees at the University of Brighton.\n

\n The artists each come from different artistic and academic background, specialising in a variety of skills. \n\n The show delivers a diverse range of creative practices, such as interactive virtual \n installations, 3D environments, creative coding and machine learning.\n

\n Throughout the \n last year, the artists have adapted to new and unconventional ways of working, as a \n result of the pandemic. New challenges have provided new opportunities to consider the \n way we interact with digital art, and Galvanised brings this together with a range of \n immersive and interactive pieces.\n

\n \n

Credits

\n

\n

\n

\n\n

Special Thanks

\n

\n

    \n
  • A huge thanks to Sue Gollifer for leading this course!
  • \n
  • A long thank you to all of our tutors; Alex May, \n Angie Taylor, Ben Sheehan, Jesse Black Mooney, Laurence Hill, Luciana Haill, Paul Bunkham and Sam Proud; \n for all your advice, support and the technical skills workshops.
  • \n
  • With a final loving thank you to friends and family who have supported us during this Masters degree. ❤️
  • \n
\n

\n\n

\n

\n
\n );\n }\n}\n\nexport default AboutPage;","import React from 'react';\n\nclass ArtistMenuOption extends React.Component {\n constructor(props) {\n super(props);\n \n this.handleClick = this.handleClick.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n\n this.angleOffset = -1 + Math.random() * 2;\n\n let xBasis = 20;\n if (window.innerWidth >= 800){\n xBasis = 0;\n }\n\n this.menuOpenStyles = {\n opacity: 1,\n transform: `translateX(${xBasis + Math.random() * 20}px) rotateZ(${this.angleOffset}deg)`,\n transition: `transform ${0.6 + Math.random() * 0.2}s cubic-bezier(0.435, 0.040, 0.285, 0.995), opacity 0.5s ease`,\n pointerEvents: `all`\n };\n\n this.menuClosedStyles = {\n opacity: 0,\n transform: `translateX(${xBasis + -10 - Math.random() * 20}px) rotateZ(${this.angleOffset}deg)`,\n transition: `transform 0.5s ease, opacity 0.5s ease`,\n pointerEvents: `none`\n };\n }\n\n handleClick(){\n this.props.setActiveArtist(this.props.name);\n }\n\n handleMouseEnter(){\n this.props.setHoveredArtist(this.props.name);\n }\n\n handleMouseLeave(){\n this.props.resetHoveredArtist();\n }\n\n render(){\n\n let styling;\n\n if (this.props.isMenuOpen) {\n styling = this.menuOpenStyles;\n } else {\n styling = this.menuClosedStyles;\n }\n\n if (this.props.hoveredArtist === this.props.name && window.innerWidth >= 800){\n styling = this.menuOpenStyles;\n }\n\n return (\n
\n

{this.props.name}

\n
\n );\n }\n}\n\nexport default ArtistMenuOption;","import React from 'react';\nimport ArtistMenuOption from './ArtistMenuOption';\n\nclass ArtistsMenu extends React.Component {\n constructor(props) {\n super(props);\n this.state = {isMenuOpen: false}; \n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() { \n this.setState(state => ({ \n isMenuOpen: !state.isMenuOpen \n })); \n }\n\n render() {\n\n const artistMenuOptions = this.props.artistDetails.map((artist) => \n \n );\n\n return (\n
\n
\n {this.state.isMenuOpen ? 'Hide Artists' : 'Show Artists'} \n
\n\n
\n {artistMenuOptions}\n
\n
\n );\n }\n}\n\nexport default ArtistsMenu;","import React from 'react';\n\nclass ArtistProfile extends React.Component {\n render() {\n return (\n
\n {this.props.alt}/\n
\n {this.props.children}\n
\n
\n );\n }\n}\n\nexport default ArtistProfile;\n","import React from 'react';\n\nclass Contact extends React.Component {\n render() {\n return (\n
\n

Contact

\n
\n {this.props.email ? : null}\n {this.props.linkedin ? : null}\n {this.props.instagram ? Instagram 📷 : null}\n {this.props.twitter ? : null}\n {this.props.youtube ? YouTube 🎥 : null}\n {this.props.github ? Github 💻 : null}\n {this.props.website ? Personal Website : null}\n
\n {this.props.children ? \n
\n {this.props.children}\n
: null }\n
\n );\n }\n}\n\nexport default Contact;\n","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass James extends React.Component {\n\n render() {\n return (\n
\n

You Are Online

\n\n \"Default\n\n

\n You Are Online is a website about how we engage with the modern internet. \n You play the role of the Default User, a grey character working productively at a desk, \n lost in the world of colours and experiences.\n However, as the User discovers, progress isn't always as great as it seems...\n

\n\n
\n
\n Visit Website\n
\n\n

\n When we consume content online, we are distracted from the feelings of our body, leading us\n to forget our physical presence.\n Without this presence, our mind is held in the world of binary signals displayed by our screens.\n We are then carefully manipulated \n by the creators of modern web services, who have invested heavily in making products \n that trap our attention, keeping us entertained and engaged.\n

\n\n
\n \"todolist\"/\n \"social\n
\n\n

\n This website reduces the participants humanity into a series of mindless interactions \n for the website's algorithms, mirroring how humans engage in the attention economy of today.\n The human is just another object in the internet's codes and analytics; their body is discarded.\n

\n\n \n \n\n

\n This website is designed for desktop devices. If you're on a mobile device and curious to see more,\n you can watch an edited playthrough of the experience using the YouTube video above.\n

\n\n

Created By James Hancock

\n \n James Hancock is a creative website developer with a background in computer science \n and innovation design. James presents the politics of the internet through striking \n online experiences; from playing with the fundamental operations of the web browser \n in labyr.in/th/, \n he’s also created complex 3D scenes in fingerprint.garden and you-are.online. His practice is focused on learning new technologies, preparing \n him for future work in creative web development.\n All projects are made on a no-cost basis and are open-sourced for collaborators to \n add to or steal from.\n \n\n \n
\n );\n }\n \n}\n\nexport default James;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport Contact from '../showcase/Contact';\nimport ArtistProfile from '../showcase/ArtistProfile';\n\nclass Jack extends React.Component {\n\n render() {\n return (\n
\n

The Snow Storm

\n \n\n

\n “The Snow Storm” is an interactive, Swiss themed, murder mystery game experience. \n The game is set in a castle in a mountainous region in the Alps in a period between the\n 1930’s and 1950’s. The narrative combines complete wackiness with Swiss folklore and \n extraterrestrial sightings around the area which it is based.\n \n The journey hints at the supernatural. So, what lies beyond the castle...?\n

\n\n
\n Game Download Link (Windows)\n
\n\n
\n Game Download Link (Mac)\n
\n\n \n\n

Created By Jack Myers

\n \n Jack Myers is a digital media artist and producer. \n Having previously specialised in illustration, animation and video editing, \n throughout the MA he has developed skills in game design and development. \n His latest project “The Snow Storm” is a murder mystery puzzle portrayed in \n a video game experience, which he wrote and produced alone. His video game work \n is centred around creating an atmosphere and building \n a world for the player to enjoy.\n \n\n \n
\n );\n }\n \n}\n\nexport default Jack;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport Contact from '../showcase/Contact';\n\nclass Tim extends React.Component {\n\n render() {\n return (\n
\n

#Hashtag

\n\n \"a\n\n \n\n

\n Your privacy is not respected in the digital realm. Personal data is being collected, \n analysed, and sold. #Hashtag helps to highlight some of my feelings on the matter, \n showing that even something as simple as a search can be exploited. In #Hashtag screens \n that are normally used for advertisements are now showing your search results, though in \n the real world, screens that usually show us information, are now starting to increasingly \n show us adverts.\n

\n\n

\n

    \n
  • Headphones are recommended.
  • \n
  • If viewing on the web, please click inside the frame before trying to interact. Downloading is recommended.
  • \n
  • If you are on mobile, or having issues viewing, there is a video provided towards the bottom of this page.
  • \n
\n

\n\n
\n \n View in Browser\n \n \n Download (Windows)\n \n \n Download (Mac)\n \n \n Download (Linux)\n \n
\n\n \n\n

By Tim McCarthy

\n

\n I am a 3D artist specialising in hard surface, game friendly digital modelling. \n With a background in front and back end programming, I try to combine my knowledge \n of both disciplines to create detailed interactive experiences. My practice mostly \n involves creating models and textures that are re-creations of real life objects, \n and simplifying them for use in games and real time media. This has led me to study \n perception, expectation and simplification, which I try to incorporate into my work. \n I’m an advocate for privacy, and I do all my work using free and open source software.\n

\n\n \n \"contact\n \n
\n );\n }\n \n}\n\nexport default Tim;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\nimport Lightbox from 'react-image-lightbox';\nimport 'react-image-lightbox/style.css'; // This only needs to be imported once in your app\n\nconst images = [\n '../img/jodie/jodie9.png',\n '../img/jodie/jodie6.png',\n '../img/jodie/jodie2.png',\n '../img/jodie/jodie3.png',\n '../img/jodie/jodie4.png',\n '../img/jodie/jodie5.png',\n '../img/jodie/jodie1.png',\n '../img/jodie/jodie7.png',\n '../img/jodie/jodie8.png'\n];\n\nclass Jodie extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n photoIndex: 0,\n lightboxIsOpen: false,\n };\n\n this.openLightbox = this.openLightbox.bind(this);\n }\n\n openLightbox(event){\n\n this.setState({\n photoIndex: parseInt(event.target.getAttribute(\"number\")),\n lightboxIsOpen: true,\n })\n\n }\n\n render() {\n const { photoIndex, lightboxIsOpen } = this.state;\n\n return (\n
\n

Unearth

\n\n \"Fashion\n\n

\n Unearth is a fully digital fashion editorial, exploring how fashion photography is \n evolving into new areas. Unearth aims to show how this shift into the digital sphere \n can gives rise to more fantasy and imagination. Fashion models and the digital \n collection featured are created by Jodie and the original collection is by \n designer @hallydesignstuff.\n

\n\n \n\n
\n \"Fashion\n \"Fashion\n
\n
\n
\n \"Fashion\n \"Fashion\n
\n
\n
\n \"Fashion\n \"Fashion\n
\n
\n
\n \"Fashion\n \"Fashion\n
\n\n
\n

Created By Jodie Hartland

\n \n Jodie comes from a fashion photography background and has a mix-media portfolio of work. \n An aspiring visual artist who is currently exploring the intersection between tech and \n fashion, Jodie is learning new ways to express the playfulness of image making through 3D \n and interactive art. \n \n\n \n\n {lightboxIsOpen && (\n this.setState({ lightboxIsOpen: false })}\n onMovePrevRequest={() =>\n this.setState({\n photoIndex: (photoIndex + images.length - 1) % images.length,\n })\n }\n onMoveNextRequest={() =>\n this.setState({\n photoIndex: (photoIndex + 1) % images.length,\n })\n }\n />\n )}\n
\n );\n }\n\n}\n\nexport default Jodie;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Vincent extends React.Component {\n\n render() {\n return (\n
\n

Haresmede

\n \n\n

\n Haresmede is a virtual installation inspired by the history and folklore of the New Forest. \n It presents artifacts of both historical stories and fantastical ones through the use of 3D \n scanned objects and entirely digitally created visual elements, alongside sound composed of \n both field recordings and artificially synthesized sound. This work aims to blur the \n boundaries of what is considered real by paralleling the tensions between fact and fiction \n with the integration of realistic and digital aesthetics.\n

\n\n \n\n
\n\n

Created By Vincent Keep

\n \n Vincent Keep creates a range of digital work informed by a background in sound and noise\n art, and previous experience as a performance artist. His work abstracts queer \n aesthetics and wider academic research through experimental approaches to his use of\n technology. While a key focus in his work remains on the use of sound, Vincent \n explores a range of mediums such as visual data manipulation, 3D art, and game \n development technologies.\n \n\n \n \n
\n );\n }\n \n}\n\nexport default Vincent;","import React from 'react';\n//import VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Lemayrt extends React.Component {\n\n render() {\n return (\n
\n

Bianhua

\n\n \"Bianhua\"/\n\n

\n This work has been driven conceptually by the artist's relationship with social media \n and online identity. For this reason, the environment is named 'Bianhua' which means\n a state of metamorphosis or transformation. It is representative of the artists own questions \n of a shifting online sphere. The piece involves poetry, sound, and abstracted nature \n to comment and reflect on our connection with the digitalised world. 'Bianhua' is a \n contribution to how we can attempt create virtual worlds through alternative interactions. \n

\n\n \"Bianhua\"/\n\n

\n The final piece uses a combination of software to experiment and combine sound, \n animation and poetry. This is delivered through a stereoscopic video \n environment produced in Cinema 4D and After Effects. \n

\n\n

Created By Lemayrt

\n \n Lemayrt's work varies in visuality, with a focus on colour, patterns and nature. \n After studying Visual Art for their BA, the knowledge gained in art history influenced \n their current research and practice within the digital realm. \n \n\n \n
\n );\n }\n \n}\n\nexport default Lemayrt;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Patrick extends React.Component {\n\n render() {\n return (\n
\n

Homeostat Installation

\n \n\n

\n Homeostat Installation is a real-time installation where \n people’s movements within a gallery space are turned into noise data and then used to \n drive a point cloud. Two people within the gallery space are made to work together to \n balance their movement without being able to see each other. The results consider \n behaviour and interaction with the unknown, directly influenced by the cybernetic \n machine, the homeostat.

\n\n

\n The spectator’s movements are translated into audio and visuals \n that are projected into the space. On show in this exhibition is a virtual prototype \n for the installation, instead of real people’s movement, the virtual characters movement \n is computer generated in real-time, so in this version of the work the computer \n is in an unknown dance of agency with itself.\n

\n\n \"Homeostat\"/\n
Gallery and pointcloud visualisations on the left, with participant tracking data on the right.
\n
\n\n

Created By Patrick Robinson

\n \n \n Patrick Robinson is an artist and creative technologist. His work often considers \n behaviour and is drawn from cybernetics. Patrick enjoys working with real-time software \n so that he is in a collaborative process of trial and error with his computer. \n This process usually results in interactive installations, data visualisations and \n audio-visual interactions that relay a process of feedback between himself, the artwork \n and the audience.\n \n\n \n \n
\n );\n }\n \n}\n\nexport default Patrick;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\n//import ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Omar extends React.Component {\n\n render() {\n return (\n
\n

The Cozy Tapes

\n \n\n

\n For the last 10 months, Omar Hamouda has been developing a videography project which involves\n the documentation of his daily life and activities during the pandemic, and where we have not\n had access to university facilities. The project incorporates elements of videography, \n photography, music production, where they are all brought into the digital art realm. \n The documentation is split into segments – starting from September 2020 up until right \n before the final unit hand in date in July 2021. The projects main aim was to find \n creative outlets within the simple everyday lives we all lead.\n

\n\n

By Omar Hamouda

\n\n

\n Omar Hamouda is currently focusing on music production and videography. \n His work blends aesthetics through the use of both contemporary and retro \n technologies and references. Omar also draws inspiration from a number of \n cultures and is not bound by the conventions of specific genres.\n

\n\n \n \n
\n );\n }\n \n}\n\nexport default Omar;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Molly extends React.Component {\n\n render() {\n //\"Stranded\"/\n return (\n
\n\n

Stranded the Musical

\n\n
\n \n
\n \n

\n Molly’s biggest passion is combining the musical world with the digital art world.\n Her Magnum Opus is Stranded the Musical, as shown in this exhibition. Molly created \n this over a series of weeks using just her apartment and the sims as sets. \n This musical aims to show who Molly truly is. Showing a new vulnerable side to her. \n All expect one song are written by Molly. It is also filmed, edited, mixed and just \n about everything else by Molly. Molly hopes that one day she gets to perform this \n musical live.\n

\n

\n Content warning: Stranded contains mild nudity, themes unsuitable for children and flashing lights\n

\n\n\n

Created By Molly Stanners Putland

\n \n Molly Stanners Putland is a filmmaker, musician, photographer and illustrator. After \n completing the BA in illustration also at the university of Brighton, Molly decided \n to embark on the master’s in digital artand Media. Molly is known for her imaginative \n films often with a musical element. Molly has recently rediscovered a passion for \n machinima and uses the life simulator “The Sims 2” as a tool to create her original \n stories. Molly’s work covers themes of pop culture, queer identity, neurodiversity, \n history and socialism. She also creates video essays about her 2 greatest passions:\n cartoons and musicals.\n \n\n \n
\n );\n }\n \n}\n\nexport default Molly;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Jiaxian extends React.Component {\n\n render() {\n return (\n
\n

The World of Go

\n\n \"Go\n\n

\n A myth says that two immortals observe the go board as they observe the world \n and their placement of white and black stones over 361 intersections represent \n the passage of the days and nights. About the origin of Go game, it also relates \n to the creation of the earth from chaos. As a fan of Go but also an artist, \n I attempt to reappear the myth via digital media technique. People can experience \n what the myth records by interacting with this work.\n

\n\n

\n In this work, you can see how a shan shui painting (a style of Chinese traditional \n painting), a map and a world (or a planet) is created based on the pattern of stones \n when the play proceeds.\n

\n \n \n\n

\n This work can provide people with a more intuitive way to comprehend the abstract beauty \n of harmony insides Go without tacit knowledge of Go. \n

\n\n

\n

\n

\n \n
\n \"Go\n \"Go\n
\n
Hideo Otake vs Ma Xiaochun, followed by Wu Qingyuan vs Shoji Hashimoto
\n \n \n \n

Created By Jiaxian Liang

\n \n Jiaxian Liang is a contemporary illustrator and visual designer mainly focusing on slide,\n UI and graphic design. His recent practice has shifted to interactive fiction and \n interactive installation. It relates to art transformation via code and explores a \n consistency between different media with the same content. A kind of natural beauty \n that people can immerse into the work and feel relax is what he attempts to achieve.\n However, all his works are driven by his meaningless flash of inspirations and \n imagination, and thus and more importantly, are for fun. \n \n\n \n\n
\n );\n }\n \n}\n\nexport default Jiaxian;","import React from 'react';\nimport VideoEmbed from '../showcase/VideoEmbed';\nimport ArtistProfile from '../showcase/ArtistProfile';\nimport Contact from '../showcase/Contact';\n\nclass Chonlachat extends React.Component {\n\n render() {\n return (\n
\n

Machine Study in Thai Art

\n \n \n

\n Machine Study in Thai Art uses machine learning to produce Thai generative artworks;\n the pictures are generated based on a dataset of 600 images using the StyleGAN algorithm. \n This project emulates Thai artwork, sharing the results in an online exhibition website, linked below.\n

\n\n \n\n \n \n \n\n

Created By Chonlachat Srisompetch

\n \n Chonlachat Srisompetch (Paul) is a technophile who is focusing on Extended Reality, \n Machine Learning, Real-time interactive installation and New media movements. He \n aspires to apply his technological skills to tourism, education and traditional cultures. \n His previous works have shown at venues including Seasonal Forest (UK), 3D Pickup Customisation \n (Thailand), Thai Costume Projection Mapping (Thailand), Interactive Firework Room \n (Thailand). His latest project, Machine Study in Thai Art, is showcasing artworks as\n an interactive online exhibition in Twitch. He mainly uses Python, C#, C++, Javascript, and GLSL.\n \n\n \n
\n );\n }\n \n}\n\nexport default Chonlachat;","import React from 'react';\n\nimport James from './artists/James';\nimport Jack from './artists/Jack';\nimport Tim from './artists/Tim';\nimport Jodie from './artists/Jodie';\nimport Vincent from './artists/Vincent';\nimport Lemayrt from './artists/Lemayrt';\nimport Patrick from './artists/Patrick';\nimport Omar from './artists/Omar';\nimport Molly from './artists/Molly';\nimport Jiaxian from './artists/Jiaxian';\nimport Chonlachat from './artists/Chonlachat';\n\nclass ArtistShowcase extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n if (this.props.artistSelected === null) return null;\n window.scrollTo(0, 0);\n\n let artistContent;\n\n if (this.props.artistSelected === \"James Hancock\") artistContent = ;\n if (this.props.artistSelected === \"Jodie Hartland\") artistContent = ;\n if (this.props.artistSelected === \"Patrick Robinson\") artistContent = ;\n if (this.props.artistSelected === \"Omar Hamouda\") artistContent = ;\n if (this.props.artistSelected === \"Molly Stanners Putland\") artistContent = ;\n if (this.props.artistSelected === \"Vincent Keep\") artistContent = ;\n if (this.props.artistSelected === \"Tim McCarthy\") artistContent = ;\n if (this.props.artistSelected === \"Jack Myers\") artistContent = ;\n if (this.props.artistSelected === \"Jiaxian Liang\") artistContent = ;\n if (this.props.artistSelected === \"Lemayrt\") artistContent = ;\n if (this.props.artistSelected === \"Chonlachat Srisompetch\") artistContent = ;\n\n return (\n
\n
\n
Return to Homepage ✖
\n
\n { artistContent }\n
\n )\n }\n}\n\nexport default ArtistShowcase;\n","import React from 'react'\n//Following the below tutorial\n//https://blog.cloudboost.io/using-html5-canvas-with-react-ff7d93f5dc76\n\nclass Canvas extends React.Component { \n\n constructor(props) {\n super(props);\n\n this.state = {\n mousePressedDown: false,\n }\n\n this.brushPressedDown = this.brushPressedDown.bind(this);\n this.brushLifted = this.brushLifted.bind(this);\n this.brushMoved = this.brushMoved.bind(this);\n }\n \n componentDidMount() {\n this.ctx = this.props.canvasRef.current.getContext(\"2d\");\n this.ctx.fillStyle = '#ffffff'\n this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n } \n\n paint(event) {\n const boundingRectangle = event.currentTarget.getBoundingClientRect();\n this.ctx.beginPath();\n this.ctx.fillStyle = this.props.brushColor.hex;\n this.ctx.arc(event.clientX - boundingRectangle.x, event.clientY - boundingRectangle.y, this.props.brushSize, 0, 2 * Math.PI);\n this.ctx.fill();\n }\n\n brushMoved(event){\n\n if (this.state.mousePressedDown) {\n this.paint(event);\n }\n\n }\n\n brushPressedDown(event){\n if (event.nativeEvent.which === 1){\n this.setState({\n mousePressedDown: true,\n })\n this.paint(event);\n }\n }\n\n brushLifted(){\n this.setState({\n mousePressedDown: false,\n })\n }\n\n render() {\n return(\n \n )\n }\n}\n\nexport default Canvas","const ARTIST_DETAILS = [\n { \n url: \"omar\",\n name:\"Omar Hamouda\",\n image: \"../img/omar/artwork.png\",\n },\n { \n url: \"james\",\n name:\"James Hancock\",\n image: \"../img/james/artwork.png\",\n },\n { \n url: \"vincent\",\n name:\"Vincent Keep\",\n image: \"../img/vincent/artwork.png\",\n },\n { \n url: \"molly\",\n name:\"Molly Stanners Putland\",\n image: \"../img/molly/artwork.png\",\n },\n { \n url: \"chonlachat\",\n name:\"Chonlachat Srisompetch\",\n image: \"../img/paul/artwork.jpeg\",\n },\n { \n url: \"tim\",\n name:\"Tim McCarthy\",\n image: \"../img/tim/artwork.png\",\n },\n { \n url: \"patrick\",\n name:\"Patrick Robinson\",\n image: \"../img/patrick/artwork.png\",\n },\n { \n url: \"jiaxian\",\n name:\"Jiaxian Liang\",\n image: \"../img/daniel/artwork.jpg\",\n },\n { \n url: \"jack\",\n name:\"Jack Myers\",\n image: \"../img/jack/artwork.png\",\n },\n { \n url: \"jodie\",\n name: \"Jodie Hartland\", \n image: \"../img/jodie/artwork.png\",\n },\n { \n url: \"lemayrt\",\n name:\"Lemayrt\",\n image: \"../img/lemayr/artwork.png\",\n }\n]\n\nexport default ARTIST_DETAILS;\n","import React from 'react';\nimport Canvas from './Canvas';\nimport ARTIST_DETAILS from '../artistDetails';\nimport { ColorPicker, toColor } from \"react-color-palette\";\nimport \"react-color-palette/lib/css/styles.css\";\n\n//Using the Color Palette provided by\n//https://github.com/Wondermarin/react-color-palette\n\nclass Sketchpad extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n brushSize: 20,\n color: toColor(\"#ffffff\"),\n };\n\n this.canvasRef = React.createRef();\n\n this.toggleGuestbookDisplay = this.toggleGuestbookDisplay.bind(this);\n this.updateColorPicker = this.updateColorPicker.bind(this);\n this.handleBrushSizeChange = this.handleBrushSizeChange.bind(this);\n this.submitSketch = this.submitSketch.bind(this);\n }\n\n toggleGuestbookDisplay(){\n this.setState(state => ({\n isOpen: !state.isOpen\n }))\n }\n\n updateColorPicker(newColor){\n this.setState({\n color: newColor\n })\n }\n\n handleBrushSizeChange(event) {\n this.setState({\n brushSize: event.target.value}\n );\n }\n\n submitSketch(){\n const xhr = new XMLHttpRequest();\n\n const name = prompt(\"Please enter your name. (Optional)\");\n\n if (name === null) {\n return;\n }\n\n xhr.open(\"POST\", \"https://gearynet.co.uk/mashow/save_doodle.php\", true);\n xhr.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\");\n xhr.onreadystatechange = function () {\n if (this.readyState !== 4) {\n return;\n }\n \n if (this.status === 200) {\n alert(\"Submitted successfully!\");\n }\n };\n\n const POST_DATA = [\n \"respond_to=\" + document.getElementById(\"sketchpad-response-selector\").value,\n \"name=\" + name,\n \"image_data=\" + this.canvasRef.current.toDataURL()\n ].join(\"&\");\n\n xhr.send(POST_DATA);\n\n this.props.closeSketchpad();\n }\n\n render() {\n\n const artistOptions = ARTIST_DETAILS.map((artist) => \n \n );\n\n const brushPreviewStyles = {\n width: (this.state.brushSize * 2) + \"px\",\n height: (this.state.brushSize * 2) + \"px\",\n backgroundColor: this.state.color.hex\n }\n\n return (\n
\n \n
\n

Brush Size : {this.state.brushSize} Pixel{ (this.state.brushSize < 2) ? \"\" : \"s\"}

\n
\n
\n \n
\n \n
\n

This drawing is for...

\n \n
\n \n \n
\n );\n }\n}\n\nexport default Sketchpad;","import React from 'react';\nimport ARTIST_DETAILS from '../artistDetails';\n\nclass CommentForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.submitComment = this.submitComment.bind(this);\n }\n\n submitComment() {\n const xhr = new XMLHttpRequest();\n\n xhr.open(\"POST\", \"https://gearynet.co.uk/mashow/save_comment.php\", true);\n xhr.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\");\n xhr.onreadystatechange = function () {\n if (this.readyState !== 4) {\n return;\n }\n \n if (this.status === 200) {\n alert(\"Submitted successfully!\");\n }\n };\n\n const POST_DATA = [\n \"body=\" + document.getElementById(\"comment-form-body\").value,\n \"name=\" + document.getElementById(\"comment-form-name\").value,\n \"for=\" + document.getElementById(\"comment-form-response-selector\").value,\n ].join(\"&\");\n\n xhr.send(POST_DATA);\n\n this.props.closeCommentForm();\n }\n\n render() {\n\n const artistOptions = ARTIST_DETAILS.map((artist) => \n \n \n );\n\n return (\n
\n
\n

Leave a Comment

\n \n
\n

Your name:

\n \n
\n
\n

Comment for:

\n
\n \n
\n
\n
\n \n \n
\n
\n
\n );\n }\n}\n\nexport default CommentForm;","import React from 'react';\nimport ARTIST_DETAILS from '../artistDetails';\n\nclass SubmissionsGallery extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedArtist: this.props.artistSelected,\n showComments: true,\n showDrawings: true,\n drawings: null,\n comments: null,\n }\n\n this.toggleComments = this.toggleComments.bind(this);\n this.toggleDrawings = this.toggleDrawings.bind(this);\n this.selectArtist = this.selectArtist.bind(this);\n }\n\n componentDidMount(){\n fetch('https://gearynet.co.uk/mashow/get_comments.php?for=all')\n .then(response => response.json())\n .then(data => {\n this.setState({ comments: data })\n });\n\n fetch('https://gearynet.co.uk/mashow/get_doodles.php?for=all')\n .then(response => response.json())\n .then(data => {\n this.setState({ drawings: data })\n });\n }\n\n toggleComments(){\n this.setState(state => ({\n showComments: !state.showComments\n }))\n }\n\n toggleDrawings(){\n this.setState(state => ({\n showDrawings: !state.showDrawings\n }))\n }\n\n selectArtist(event){\n this.setState({\n selectedArtist: event.target.value\n })\n }\n\n render() {\n\n let feed = null;\n\n let selectedArtist = \"Everyone\";\n \n if (this.state.selectedArtist !== null){\n selectedArtist = this.state.selectedArtist;\n }\n\n if (this.state.drawings && this.state.comments) {\n\n feed = [];\n\n if (this.state.showComments){\n\n for (let i = 0; i < this.state.comments.length; i++){\n\n let recipient = \"For: \";\n if (this.state.comments[i].for === \"all\"){\n recipient += \"everyone\";\n } else {\n recipient += this.state.comments[i].for;\n }\n\n if (selectedArtist === \"Everyone\" || selectedArtist.toLowerCase() === this.state.comments[i].for) {\n feed.push(\n
\n
\n {this.state.comments[i].body}\n
\n
\n {recipient}\n
\n
\n
{\"From: \" + this.state.comments[i].name.toLowerCase()}
\n
{this.state.comments[i].timef}
\n
\n
\n );\n }\n }\n\n }\n\n if (this.state.showDrawings){\n\n for (let i = 0; i < this.state.drawings.length; i++){\n\n let recipient = \"For: \";\n if (this.state.drawings[i].for === \"all\"){\n recipient += \"everyone\";\n } else {\n recipient += this.state.drawings[i].for;\n }\n\n if (selectedArtist === \"Everyone\" || selectedArtist.toLowerCase() === this.state.drawings[i].for) {\n feed.splice(i * 2, 0,\n
\n
\n \"\"\n
\n
\n {recipient}\n
\n
\n
{\"From: \" + this.state.drawings[i].name.toLowerCase()}
\n
{this.state.drawings[i].timef}
\n
\n
\n );\n }\n }\n }\n }\n\n const artistOptions = ARTIST_DETAILS.map((artist) => \n \n );\n \n return (\n
\n
\n

\n Guestbook Submissions\n

\n \n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
Filter Submissions:
\n \n
\n
\n \n {feed}\n
\n
\n );\n }\n}\n\nexport default SubmissionsGallery;","import React from 'react';\nimport Sketchpad from './Sketchpad';\nimport CommentForm from './CommentForm';\nimport SubmissionsGallery from './SubmissionsGallery';\n\nclass Guestbook extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n sketchpadOpen: false,\n commentFormOpen: false,\n submissionsGalleryOpen: false,\n };\n\n this.toggleGuestbookDisplay = this.toggleGuestbookDisplay.bind(this);\n this.toggleSketchpadDisplay = this.toggleSketchpadDisplay.bind(this);\n this.toggleCommentFormDisplay = this.toggleCommentFormDisplay.bind(this);\n this.toggleSubmissionsGalleryDisplay = this.toggleSubmissionsGalleryDisplay.bind(this);\n }\n\n toggleGuestbookDisplay(){\n this.setState(state => ({\n isOpen: !state.isOpen\n }))\n }\n\n toggleSketchpadDisplay(){\n this.props.setNoScroll(!this.state.sketchpadOpen);\n this.setState(state => ({\n sketchpadOpen: !state.sketchpadOpen\n }))\n }\n\n toggleCommentFormDisplay(){\n this.props.setNoScroll(!this.state.commentFormOpen);\n this.setState(state => ({\n commentFormOpen: !state.commentFormOpen\n }))\n }\n\n toggleSubmissionsGalleryDisplay(){\n this.props.setNoScroll(!this.state.submissionsGalleryOpen);\n this.setState(state => ({\n submissionsGalleryOpen: !state.submissionsGalleryOpen\n }))\n }\n\n render() {\n return (\n <>\n
\n
\n { this.state.isOpen ? \"Close Guestbook ❌\" : \"Open Guestbook 🖋\" }\n
\n { this.state.isOpen ? \n
\n

View this website on a desktop device to leave a drawing.

\n \n \n \n
View guestbook

submissions
\n
\n : null\n }\n
\n\n { this.state.sketchpadOpen ?\n \n : null\n }\n\n { this.state.commentFormOpen ?\n \n : null\n }\n \n { this.state.submissionsGalleryOpen ?\n \n : null\n }\n \n );\n }\n}\n\nexport default Guestbook;","import React from 'react';\n\nclass CollagePhoto extends React.Component {\n constructor(props) {\n super(props);\n \n this.handleClick = this.handleClick.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n\n this.hoverDisplayStyles = {\n opacity: 1,\n pointerEvents: \"all\",\n transition: `opacity 0.5s ease`\n };\n\n this.hoverHideStyles = {\n opacity: 0,\n pointerEvents: \"none\",\n transition: `opacity 0.5s ease`\n };\n\n this.artistName = this.props.name.replace(\" \", \"-\").replace(\" \", \"-\");\n\n }\n\n handleMouseEnter(){\n this.props.setHoveredArtist(this.props.name);\n }\n\n handleMouseLeave(){\n this.props.resetHoveredArtist();\n }\n\n handleClick(){\n this.props.setActiveArtist(this.props.name);\n }\n\n render(){\n\n const collagePhotoClassNames = \"collage-photo \" + this.artistName + \"__collage-photo\";\n\n let photoHoverStyling;\n if (this.props.name === this.props.hoveredArtist) {\n photoHoverStyling = this.hoverDisplayStyles;\n } else {\n photoHoverStyling = this.hoverHideStyles;\n }\n\n let selectionHoverStyling;\n if (this.props.name === this.props.hoveredArtist && window.innerWidth >= 800) {\n selectionHoverStyling = { zIndex: 100 }\n }\n\n if (this.props.artistSelected === null) {\n return (\n
\n \"\"\n
\n \"\"\n\n
\n );\n } else {\n return null;\n }\n }\n}\n\nexport default CollagePhoto;","import React from 'react';\nimport CollagePhoto from './CollagePhoto';\n\nclass Collage extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n\n let mobilePhoto = false;\n if (window.innerWidth < 800){\n mobilePhoto = true;\n }\n\n const collagePhotos = this.props.artistDetails.map((artist) => \n \n );\n\n return (\n <>\n {collagePhotos}\n \n );\n }\n}\n\nexport default Collage;","import React from 'react';\n\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport AboutPage from './components/AboutPage';\nimport ArtistsMenu from './components/ArtistsMenu';\nimport ArtistShowcase from './components/ArtistShowcase';\nimport Guestbook from './components/GuestBook';\nimport Collage from './components/Collage';\n\nimport ARTIST_DETAILS from './artistDetails'; //JSON data\nimport './scss/main.scss'; //All components styled from the /scss folder\n\nclass App extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isArtistSelected: false, \n artistSelected: null,\n hoveredArtist: null,\n noScroll: false,\n showAboutPage: false,\n };\n\n this.setActiveArtist = this.setActiveArtist.bind(this);\n this.setHoveredArtist = this.setHoveredArtist.bind(this);\n this.resetHoveredArtist = this.resetHoveredArtist.bind(this);\n this.removeActiveArtist = this.removeActiveArtist.bind(this);\n this.setNoScroll = this.setNoScroll.bind(this);\n this.toggleAboutPage = this.toggleAboutPage.bind(this);\n }\n\n setActiveArtist(artist) {\n\n let artistURL = null;\n for (let i = 0; i < ARTIST_DETAILS.length; i++){\n if (ARTIST_DETAILS[i].name === artist){\n artistURL = \"/\" + ARTIST_DETAILS[i].url;\n break;\n }\n }\n\n window.location.pathname = artistURL;\n }\n\n removeActiveArtist() {\n window.location.pathname = \"/\";\n }\n\n setHoveredArtist(artist) {\n this.setState({\n hoveredArtist: artist\n })\n }\n\n resetHoveredArtist() {\n this.setState({\n hoveredArtist: null\n })\n }\n\n setNoScroll(value) {\n this.setState({\n noScroll: value\n })\n }\n\n toggleAboutPage(){\n this.setState(state => ({\n showAboutPage: !state.showAboutPage,\n noScroll: !state.showAboutPage\n }));\n }\n\n componentDidMount() {\n if (window.location.pathname !== \"/\"){\n\n //For the final show live view & presentations.\n //if (window.location.pathname === \"/zoom\"){\n // window.location.href=\"https://zoom.us/j/9646433419\";\n //}\n\n if (window.location.pathname === \"/about\"){\n this.setState(state => ({\n showAboutPage: !state.showAboutPage,\n noScroll: !state.showAboutPage\n }));\n }\n\n let name = window.location.pathname.substring(1); //removes backslash at start\n\n let selectedArtist = null;\n for (let i = 0; i < ARTIST_DETAILS.length; i++){\n if (ARTIST_DETAILS[i].url === name){\n selectedArtist = ARTIST_DETAILS[i].name;\n break;\n }\n }\n\n if (selectedArtist !== null){\n this.setState({\n isArtistSelected: true,\n artistSelected: selectedArtist\n })\n \n this.resetHoveredArtist();\n }\n\n }\n }\n\n render() {\n\n if (this.state.noScroll) {\n document.body.style.overflowY = \"hidden\";\n } else {\n document.body.style.overflowY = \"initial\";\n }\n\n return (\n
\n\n
\n\n { this.state.showAboutPage ? \n \n : null }\n\n \n \n \n\n \n\n \n\n
\n
\n );\n }\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}