{"version":3,"sources":["Header.js","CV.js","Navigation.js","Contact.js","About.js","Gallery.js","Modal.js","Footer.js","art.js","App.js","serviceWorker.js","index.js"],"names":["Header","className","href","CV","id","Navigation","Contact","src","About","Gallery","props","breakpointCols","default","1100","700","500","columnClassName","this","filteredArt","map","item","key","imageIndex","indexOf","onClick","link","alt","title","openModal","React","Component","Modal","style","parentState","displayModal","closeModal","modalDisplayForwardBackButtons","modalImageIndex","modalPreviousImage","viewBox","width","height","stroke","strokeWidth","fill","strokeLinecap","strokeLinejoin","x1","y1","x2","y2","points","modalImageURL","modalTitle","modalYear","modalMedia","modalDims","modalPrice","modalStatement","modalNextImage","Footer","aria-hidden","art","App","includeInGalleryTrue","bind","filterIncludeInGallery","displayBlockModal","establishImageIndex","setModalArtDetails","keyAction","landscapeOrPortrait","state","showingArt","currentStatement","modalImageOrientation","setState","imageShape","year","media","dims","price","statement","imageOrientation","document","querySelector","maxWidth","length","getElementById","display","previousImageIndex","nextImageIndex","event","keyCode","console","log","includeingallery","filter","onkeyup","Boolean","window","location","hostname","match","ReactDOM","render","navigator","serviceWorker","ready","then","registration","unregister","catch","error","message"],"mappings":"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","file":"static/js/main.373db086.chunk.js","sourcesContent":["import React from 'react';\nimport './index.css';\n\n\n\nfunction Header() {\n return (\n
\n\n

\n \n Mayumi
\n Ishino
\n
\n

\n\n

Tokyo-born, Brooklyn-based interdisciplinary artist.

\n
\n );\n}\n\nexport default Header;\n","import React from 'react';\nimport './index.css';\n\n\n\nfunction CV() {\n return (\n\n
\n\n

Statement

\n\n

\n i employ visual metaphors to distill complexity into simple forms, incorporating various mediums including sculpture, live performance, painting, video and sound. i am intrigued by how the self-imposed restraint to limit information can both guide the creative process and public discourse. while metaphor is essential in my conception and process, my focus is not primarily on the ideological but on the sensory, aesthetic experience at a primal, physical level. studio art practice keeps me grounded through the use of formal qualities such as light and shadow, scale and composition. my inspirations come from experimenting with various materials that surround me in daily routine. this practice is the backbone of my theatrical presentation. much of my performance work employs methodical repetition. i commit myself and my performers to submit to task-based action, to attend to each step, to blow a horn or to pour out water. within a strictly defined structure, there is freedom from mundane psychological preoccupations. the more the performer removes the sense of self but just pursues the action, the more the audience responds. our contact strengthens. i am eager for this dialogue.\n

\n\n
\n\n );\n}\n\nexport default CV;\n\n","import React from 'react';\nimport './index.css';\n\n\n\nfunction Navigation() {\n return (\n \n );\n}\n\nexport default Navigation;\n\n","import React from 'react';\nimport './index.css';\n\n\n\nfunction Contact() {\n return (\n
\n\n

Contact

\n

\n\n
\n );\n}\n\nexport default Contact;\n\n","import React from 'react';\nimport './index.css';\n\n\n\nfunction About() {\n return (\n
\n

About

\n

born in tokyo, currently living in new york, mayumi ishino received an mfa in sculpture from new york academy of art. mayumi combines studio art practice, performance, directing, site-specific installation, and video, presenting her work in national and international institutions including: exit art, ny; art news projekts, berlin; 3rd international performance festival, indonesia. awards include: manhattan community art fund; immigrant artists project at the new york foundation for the arts; the virginia center for the creative arts; i-park; constance saltonstall foundation for the arts; and hrh prince of wales prize.

\n
\n );\n}\n\nexport default About;\n","import React from 'react';\nimport './index.css';\nimport Masonry from 'react-masonry-css'\n\n\nexport default class Gallery extends React.Component {\n constructor(props) {\n super(props);\n\n }\n\n\n render() {\n\n // For use with Masonry package\n const breakpointColumnsObj = {\n default: 4,\n 1100: 3,\n 700: 2,\n 500: 1\n };\n\n\n return (\n
\n\n
\n\n \n {this.props.filteredArt.map( (item, key) => {\n\n let imageIndex = this.props.filteredArt.indexOf(item)\n // console.log(\"imageIndex as we build the gallery:\", imageIndex)\n\n return(\n\n {\n // this.props.establishImageIndex(imageIndex, () => {\n // })\n }}>\n\n {item.title}\n {\n this.props.openModal(imageIndex)\n // this.props.establishImageIndex(imageIndex)\n // this.props.setModalArtDetails(item.link, item.title, item.year, item.media, item.dims, item.price, item.statement, item.imageShape)\n }\n }\n // style={this.props.parentState.carouselButtonEdgeCase}\n // onMouseLeave={this.props.closeModalImage}\n />\n\n
\n )\n\n })\n }\n\n \n\n \n\n
\n );\n }\n\n}\n\n","import React, { Component } from 'react';\n\n\n// =========================================================\n// When the user clicks on an image, a modal opens up.\n// The modal closes when the user clicks \"close\" X button.\n// There are forward and back buttons that allow the user\n// to view all images in modal view\n// =========================================================\n\nexport default class Modal extends Component {\n render() {\n\n\n return (\n\n \n\n
\n\n
\n\n {\n let imageIndex = this.props.parentState.modalImageIndex - 1\n this.props.modalPreviousImage(imageIndex)\n }}\n >\n \n \n \n \n \n \n
\n \n\n\n
\n\n
\n \"\"\n\n
\n\n
\n

{this.props.parentState.modalTitle}

\n

{this.props.parentState.modalYear}

\n

{this.props.parentState.modalMedia}

\n

{this.props.parentState.modalDims}

\n

{this.props.parentState.modalPrice}

\n

{this.props.parentState.modalStatement}

\n
\n\n
\n\n\n
\n\n
\n \n \n \n \n \n \n
\n\n
{\n\n let imageIndex = this.props.parentState.modalImageIndex + 1\n this.props.modalNextImage(imageIndex)\n }\n }\n >\n \n \n \n \n \n \n
\n\n
\n\n \n\n\n \n\n );\n }\n}\n","import React, { Component } from 'react';\n\n\nexport default class Footer extends Component {\n render() {\n return (\n\n \n );\n }\n}\n","const art0 = {\n \"link\": \"https://farm5.static.flickr.com/4006/4277453916_1dc30fc85f_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art1 = {\n \"link\": \"https://farm3.static.flickr.com/2739/4274981274_0c5de50956_o.jpg\",\n \"title\": 'Polkadot',\n \"media\": 'At Mazer Theater at Education Alliance, New York, NY USA',\n \"statement\": 'Interdisciplinary performance art.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art2 = {\n \"link\": \"https://farm3.static.flickr.com/2420/3701084099_7cec930f9f_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art3 = {\n \"link\": \"https://farm3.static.flickr.com/2592/3717142869_f753a2a376_o.jpg\",\n \"title\": 'linebreak',\n \"media\": 'At 320 Studios, New York, NY USA',\n \"statement\": 'Interdisciplinary performance comission for Financial Corps fundraising event. Inspirations: Intersection of various lives. Constrution and deconstruction.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art4 = {\n \"link\": \"https://farm3.static.flickr.com/2570/3720653109_3c2cf47bce_o.jpg\",\n \"title\": 'fella',\n \"media\": 'at the virginia center for the creative arts, amherst, va, usa',\n \"statement\": 'outdoor interdisciplinary performance.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art5 = {\n \"link\": \"https://farm4.static.flickr.com/3441/3714003171_d82bf615df_o.jpg\",\n \"title\": 'glimmer',\n \"media\": 'at i-park, east haddam, ct',\n \"statement\": 'outdoor installation and performance in the forest.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art6 = {\n \"link\": \"https://farm3.static.flickr.com/2662/3726965093_9416ca7b81_o.jpg\",\n \"title\": 'mirror',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'I stand in front of a mirror. Eyes stand out first. I notice the shape of the mouth, the opening width of it. Nose shows the tilt of the face most significantly. Hair obstructs the outline, so I lift it to see contour. I tilt my head further, to check if everything is at the right angle. I move to the side, or squat down a bit, so that I can see what I draw on the mirror. The surface is very shiny and my pens are semitransparent. From an angle, I try to confirm if what I have drawn matches what I think I see. Then I bring myself back to the original position, the right position. I start to see the colors. Cold or warm. Mat or Shiny. place the dark lines. finalize the image. And Shatter.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art7 = {\n \"link\": \"https://farm4.static.flickr.com/3002/3720893609_b3e5f2ebca_o.jpg\",\n \"title\": 'tsumiki',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'repeating continuously during the exhibition, i build a meticulously perfect geometric structure that surrounds me and appears to trap me inside. once the structure is complete, i come out of it at once using only the force of my body. once outside of the structure, i rush to clean it up and start building it again from the dismantled structure. each construction takes about 15-20 minutes.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art8 = {\n \"link\": \"https://farm3.static.flickr.com/2569/3725708642_92884656f1_o.jpg\",\n \"title\": 'water',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'i draw surrounding people and objects as well as trees to represent nature, only using water and a brush. as it dries, the image disappears.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art9 = {\n \"link\": \"https://farm3.static.flickr.com/2569/3724739472_a5c8ab40e6_o.jpg\",\n \"title\": 'seesaw',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'live performance in the window space on busy street in nyc. i walked extremely slow motion as in buddhist meditation (3-4 min. to cross 8 feet seesaw) back and forth on top of seesaw for the 3 day group performance event',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art10 = {\n \"link\": \"https://farm5.static.flickr.com/4053/4276536493_f89f2e5e06_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art11 = {\n \"link\": \"https://farm5.static.flickr.com/4063/4274235829_4cec39d71f_o.jpg\",\n \"title\": 'Polkadot',\n \"media\": 'At Mazer Theater at Education Alliance, New York, NY USA',\n \"statement\": 'Interdisciplinary performance art.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art12 = {\n \"link\": \"https://farm4.static.flickr.com/3430/3701892742_c8c80240c1_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art13 = {\n \"link\": \"https://farm3.static.flickr.com/2492/3717142029_86ae226728_o.jpg\",\n \"title\": 'linebreak',\n \"media\": 'At 320 Studios, New York, NY USA',\n \"statement\": 'Interdisciplinary performance comission for Financial Corps fundraising event. Inspirations: Intersection of various lives. Constrution and deconstruction.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art14 = {\n \"link\": \"https://farm4.static.flickr.com/3518/3723834565_8b46f8f8b6_o.jpg\",\n \"title\": 'fella',\n \"media\": 'at the virginia center for the creative arts, amherst, va, usa',\n \"statement\": 'outdoor interdisciplinary performance.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art15 = {\n \"link\": \"https://farm3.static.flickr.com/2554/3723979603_4f61766199_o.jpg\",\n \"title\": 'glimmer',\n \"media\": 'at i-park, east haddam, ct',\n \"statement\": 'outdoor installation and performance in the forest.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art16 = {\n \"link\": \"https://farm3.static.flickr.com/2645/3720894233_727dd3474f_o.jpg\",\n \"title\": 'tsumiki',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'repeating continuously during the exhibition, i build a meticulously perfect geometric structure that surrounds me and appears to trap me inside. once the structure is complete, i come out of it at once using only the force of my body. once outside of the structure, i rush to clean it up and start building it again from the dismantled structure. each construction takes about 15-20 minutes.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art17 = {\n \"link\": \"https://farm4.static.flickr.com/3462/3721120565_88359d947a_o.jpg\",\n \"title\": 'seesaw',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'live performance in the window space on busy street in nyc. i walked extremely slow motion as in buddhist meditation (3-4 min. to cross 8 feet seesaw) back and forth on top of seesaw for the 3 day group performance event',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art20 = {\n \"link\": \"https://farm3.static.flickr.com/2801/4276536239_d9af88850d_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art21 = {\n \"link\": \"https://farm5.static.flickr.com/4006/4274235477_2d2f024563_o.jpg\",\n \"title\": 'Polkadot',\n \"media\": 'At Mazer Theater at Education Alliance, New York, NY USA',\n \"statement\": 'Interdisciplinary performance art.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art22 = {\n \"link\": \"https://farm3.static.flickr.com/2636/3724838050_01b6514f2c_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art23 = {\n \"link\": \"https://farm4.static.flickr.com/3456/3717957142_319d3a2cbf_o.jpg\",\n \"title\": 'linebreak',\n \"media\": 'At 320 Studios, New York, NY USA',\n \"statement\": 'Interdisciplinary performance comission for Financial Corps fundraising event. Inspirations: Intersection of various lives. Constrution and deconstruction.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art24 = {\n \"link\": \"https://farm3.static.flickr.com/2493/3720653581_4390f20fdf_o.jpg\",\n \"title\": 'fella',\n \"media\": 'at the virginia center for the creative arts, amherst, va, usa',\n \"statement\": 'outdoor interdisciplinary performance.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art25 = {\n \"link\": \"https://farm3.static.flickr.com/2610/3714779488_d39cefba40_o.jpg\",\n \"title\": 'glimmer',\n \"media\": 'at i-park, east haddam, ct',\n \"statement\": 'outdoor installation and performance in the forest.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art26 = {\n \"link\": \"https://farm4.static.flickr.com/3433/3720893965_197612253f_o.jpg\",\n \"title\": 'tsumiki',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'repeating continuously during the exhibition, i build a meticulously perfect geometric structure that surrounds me and appears to trap me inside. once the structure is complete, i come out of it at once using only the force of my body. once outside of the structure, i rush to clean it up and start building it again from the dismantled structure. each construction takes about 15-20 minutes.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art27 = {\n \"link\": \"https://farm3.static.flickr.com/2512/3724739538_b4b96e75d5_o.jpg\",\n \"title\": 'seesaw',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'live performance in the window space on busy street in nyc. i walked extremely slow motion as in buddhist meditation (3-4 min. to cross 8 feet seesaw) back and forth on top of seesaw for the 3 day group performance event',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art30 = {\n \"link\": \"https://farm5.static.flickr.com/4055/4276535579_886a0e8205_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art31 = {\n \"link\": \"https://farm5.static.flickr.com/4046/4274235549_815e5131b5_o.jpg\",\n \"title\": 'Polkadot',\n \"media\": 'At Mazer Theater at Education Alliance, New York, NY USA',\n \"statement\": 'Interdisciplinary performance art.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art32 = {\n \"link\": \"https://farm3.static.flickr.com/2521/3701892612_cecdc22ff2_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art33 = {\n \"link\": \"https://farm4.static.flickr.com/3447/3717957576_f338128ddd_o.jpg\",\n \"title\": 'linebreak',\n \"media\": 'At 320 Studios, New York, NY USA',\n \"statement\": 'Interdisciplinary performance comission for Financial Corps fundraising event. Inspirations: Intersection of various lives. Constrution and deconstruction.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art34 = {\n \"link\": \"https://farm3.static.flickr.com/2470/3720653819_4a4a83ae70_o.jpg\",\n \"title\": 'fella',\n \"media\": 'at the virginia center for the creative arts, amherst, va, usa',\n \"statement\": 'outdoor interdisciplinary performance.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art35 = {\n \"link\": \"https://farm4.static.flickr.com/3454/3723979467_09c170d54f_o.jpg\",\n \"title\": 'glimmer',\n \"media\": 'at i-park, east haddam, ct',\n \"statement\": 'outdoor installation and performance in the forest.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art36 = {\n \"link\": \"https://farm3.static.flickr.com/2483/3723880875_361917bd0a_o.jpg\",\n \"title\": 'tsumiki',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'repeating continuously during the exhibition, i build a meticulously perfect geometric structure that surrounds me and appears to trap me inside. once the structure is complete, i come out of it at once using only the force of my body. once outside of the structure, i rush to clean it up and start building it again from the dismantled structure. each construction takes about 15-20 minutes.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art37 = {\n \"link\": \"https://farm3.static.flickr.com/2434/3722216577_213f96e9f1_o.jpg\",\n \"title\": 'seesaw',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'live performance in the window space on busy street in nyc. i walked extremely slow motion as in buddhist meditation (3-4 min. to cross 8 feet seesaw) back and forth on top of seesaw for the 3 day group performance event',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art40 = {\n \"link\": \"https://farm5.static.flickr.com/4069/4277279474_f4b4ec388e_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art41 = {\n \"link\": \"https://farm5.static.flickr.com/4027/4274235769_02e623b57c_o.jpg\",\n \"title\": 'Polkadot',\n \"media\": 'At Mazer Theater at Education Alliance, New York, NY USA',\n \"statement\": 'Interdisciplinary performance art.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art42 = {\n \"link\": \"https://farm3.static.flickr.com/2558/3724837968_eea3f7741f_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art43 = {\n \"link\": \"https://farm3.static.flickr.com/2550/3717958220_c4392dd295_o.jpg\",\n \"title\": 'linebreak',\n \"media\": 'At 320 Studios, New York, NY USA',\n \"statement\": 'Interdisciplinary performance comission for Financial Corps fundraising event. Inspirations: Intersection of various lives. Constrution and deconstruction.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art44 = {\n \"link\": \"https://farm3.static.flickr.com/2468/3720653867_539c3c5d28_o.jpg\",\n \"title\": 'fella',\n \"media\": 'at the virginia center for the creative arts, amherst, va, usa',\n \"statement\": 'outdoor interdisciplinary performance.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art45 = {\n \"link\": \"https://farm3.static.flickr.com/2563/3714813466_9be109e7b5_o.jpg\",\n \"title\": 'glimmer',\n \"media\": 'at i-park, east haddam, ct',\n \"statement\": 'outdoor installation and performance in the forest.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art46 = {\n \"link\": \"https://farm4.static.flickr.com/3437/3720894045_65b62f1547_o.jpg\",\n \"title\": 'tsumiki',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'repeating continuously during the exhibition, i build a meticulously perfect geometric structure that surrounds me and appears to trap me inside. once the structure is complete, i come out of it at once using only the force of my body. once outside of the structure, i rush to clean it up and start building it again from the dismantled structure. each construction takes about 15-20 minutes.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art47 = {\n \"link\": \"https://farm3.static.flickr.com/2621/3723930707_eef04ccd42_o.jpg\",\n \"title\": 'seesaw',\n \"media\": 'at exit art, nyc. live audience performance project',\n \"statement\": 'live performance in the window space on busy street in nyc. i walked extremely slow motion as in buddhist meditation (3-4 min. to cross 8 feet seesaw) back and forth on top of seesaw for the 3 day group performance event',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art50 = {\n \"link\": \"https://farm3.static.flickr.com/2534/4276535317_6095db4d97_o.jpg\",\n \"title\": 'Blindfaith',\n \"media\": 'At Exit Art (as part of the Performance in Crisis series), New York, NY',\n \"statement\": 'Multimedia live performance. A live goldfish in a clear glass bowl is placed on a pedestal at each end of the space. Two performers mirror the same action repeatedly: one takes a cup of water from bowl A and pours it into bowl B, and the other does the opposite. In the center, the third performer walks in a large circle repeatedly. She is blindfolded and carries a live fish in a bowl. She dips her feet in this bowl making her footprints on the concrete floor. A 5 minute audio-visual file is projected on a wall and repeated throughout.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\nconst art52 = {\n \"link\": \"https://farm3.static.flickr.com/2625/3701084519_782bb8a493_o.jpg\",\n \"title\": 'kasa-casa',\n \"media\": 'Funded by NYC Department of Cultural Affairs, administered by Lower Manhattan Cultural Council',\n \"statement\": 'Interdisciplinary performance art presented at IS143 in Washington Heights, New York.',\n \"imageShape\": \"landscape\",\n \"includeingallery\": true,\n}\n\nconst art = [\n art0,\n art1,\n art2,\n art3,\n art4,\n art5,\n art6,\n art7,\n art8,\n art9,\n art10,\n art11,\n art12,\n art13,\n art14,\n art15,\n art17,\n art20,\n art21,\n art22,\n art23,\n art24,\n art25,\n art27,\n art30,\n art31,\n art32,\n art33,\n art34,\n art35,\n art37,\n art40,\n art41,\n art42,\n art43,\n art44,\n art45,\n art47,\n art50,\n art52\n]\n\nexport default art\n","import React from 'react';\nimport './index.css';\nimport Header from './Header';\nimport CV from './CV';\nimport Navigation from './Navigation';\nimport Contact from './Contact';\nimport About from './About';\nimport Gallery from './Gallery';\nimport Modal from './Modal';\nimport Footer from './Footer';\nimport art from './art';\n\n\nexport default class App extends React.Component {\n constructor(props) {\n super(props);\n\n // This binding\n this.includeInGalleryTrue = this.includeInGalleryTrue.bind(this);\n this.filterIncludeInGallery = this.filterIncludeInGallery.bind(this);\n this.openModal = this.openModal.bind(this);\n this.displayBlockModal = this.displayBlockModal.bind(this);\n this.closeModal = this.closeModal.bind(this);\n this.modalNextImage = this.modalNextImage.bind(this);\n this.modalPreviousImage = this.modalPreviousImage.bind(this);\n this.establishImageIndex = this.establishImageIndex.bind(this);\n this.setModalArtDetails = this.setModalArtDetails.bind(this);\n this.keyAction = this.keyAction.bind(this);\n this.modalDisplayForwardBackButtons = this.modalDisplayForwardBackButtons.bind(this);\n this.landscapeOrPortrait = this.landscapeOrPortrait.bind(this);\n\n\n this.state = {\n filteredArt: [],\n showingArt: '',\n currentStatement: '',\n displayModal: {'display': 'none'},\n modalImageIndex: 0,\n modalImageURL: '',\n modalTitle: '',\n modalYear: '',\n modalDims: '',\n modalMedia: '',\n modalPrice: '',\n modalImageOrientation: 'landscape'\n };\n }\n\n\n// ==================================\n// modal: the expanded image\n// ==================================\n// setStates: 1) to indicate which image the user has clicked\n// 2) change the css display class from \"none\" to \"block\"\n// 3) a bunch of information accompanying each image\n // openModal(modalURL, modalTitle, modalYear, modalMedia, modalDims, modalPrice, modalStatement, modalImageOrient) {\n openModal(imageIndex) {\n // console.log(\"1) opening modal via openModal() and imageIndex is:\", imageIndex)\n this.establishImageIndex(imageIndex)\n }\n\n // 1) set state with the index of the image the user has clicked\n // 2) then, figure out if the back and forward buttons should be displayed\n establishImageIndex(imageIndex){\n this.setState({modalImageIndex: imageIndex}, () => {\n // console.log(\"2) establishImageIndex():\", this.state.modalImageIndex)\n this.setModalArtDetails()\n this.displayBlockModal()\n this.modalDisplayForwardBackButtons()\n })\n }\n\n // one job: add css display: block; to the modal\n displayBlockModal() {\n this.setState({displayModal: {'display': \"block\"}})\n // console.log(`4) add css display: block; to the modal`)\n }\n\n setModalArtDetails(imageIndex){\n this.setState({modalTitle: this.state.filteredArt[this.state.modalImageIndex].title})\n this.setState({modalImageOrientation: this.state.filteredArt[this.state.modalImageIndex].imageShape}, () => {\n this.landscapeOrPortrait()\n this.setState({modalImageURL: this.state.filteredArt[this.state.modalImageIndex].link})\n this.setState({modalYear: this.state.filteredArt[this.state.modalImageIndex].year})\n this.setState({modalMedia: this.state.filteredArt[this.state.modalImageIndex].media})\n this.setState({modalDims: this.state.filteredArt[this.state.modalImageIndex].dims})\n this.setState({modalPrice: this.state.filteredArt[this.state.modalImageIndex].price})\n this.setState({modalStatement: this.state.filteredArt[this.state.modalImageIndex].statement})\n })\n // console.log(\"3) setModalArtDetails():\", this.state.modalTitle, this.state.modalYear, this.state.modalMedia,)\n }\n\n\n // The art image dimensions are a mixture of landscape and portrait or square.\n // They can't all be displayed with the same width or they'd blow out the user's screen.\n // Every image has a key value pair in the .json where I indicate what type of image is it:\n // lanscape, portrait or square. This function sets the image max-width based on what\n // kind of image it is.\n landscapeOrPortrait() {\n let imageOrientation = this.state.modalImageOrientation\n if (imageOrientation == \"landscape\") {\n // console.log(`6)`, this.state.modalTitle, \"is:\", imageOrientation)\n document.querySelector('#modal-image').style.maxWidth = \"700px\";\n document.querySelector('.modal-info-container').style.maxWidth = \"700px\";\n } else if (imageOrientation == \"portrait\") {\n\n // console.log(`6)`, this.state.modalTitle, \"is:\", imageOrientation)\n document.querySelector('#modal-image').style.maxWidth = \"450px\";\n document.querySelector('.modal-info-container').style.maxWidth = \"450px\";\n } else {\n // console.log(`6)`, this.state.modalTitle, \"is:\", imageOrientation)\n document.querySelector('#modal-image').style.maxWidth = \"500px\";\n document.querySelector('.modal-info-container').style.maxWidth = \"500px\";\n }\n\n }\n\n // Don't display the modal back arrows if the user is viewing the first image.\n // Don't display the modal forward arrows if the user is viewing the last image.\n modalDisplayForwardBackButtons(){\n if (this.state.modalImageIndex === this.state.filteredArt.length - 1) {\n // console.log(`5) image index is:`, this.state.modalImageIndex , `Don't display next arrow`)\n document.getElementById('modal-next-button').style.display = 'none'\n document.getElementById('modal-back-button').style.display = 'block'\n }\n else if (this.state.modalImageIndex === 0) {\n // console.log(`5) image index is:`, this.state.modalImageIndex, `Don't display back arrow`)\n document.getElementById('modal-back-button').style.display = 'none'\n document.getElementById('modal-next-button').style.display = 'block'\n } else {\n // console.log(`5) image index is:`, this.state.modalImageIndex, `Both arrows should appear`)\n document.getElementById('modal-back-button').style.display = 'block'\n document.getElementById('modal-next-button').style.display = 'block'\n }\n }\n\n// this function applies both to the arrow buttons on the site &\n// the arrow buttons on the keyboard\n// if the user hits the back arrown on their keyboard on the first image,\n// the modal closes.\n modalPreviousImage(imageIndex) {\n // console.log(\"modalNextImage() this.state.modalImageIndex is: \", this.state.modalImageIndex)\n\n let previousImageIndex = this.state.modalImageIndex - 1\n\n if (previousImageIndex < 0) {\n this.closeModal()\n } else {\n this.setState({modalImageIndex: previousImageIndex}, () => {\n this.establishImageIndex(this.state.modalImageIndex)\n })\n }\n }\n\n// this function applies both to the modal arrow buttons &\n// the arrow buttons on the keyboard.\n// If the user hits the forward arrow on their keyboard on the last image,\n// the modal closes.\n modalNextImage(imageIndex) {\n // console.log(\"modalNextImage() this.state.modalImageIndex is: \", this.state.modalImageIndex)\n\n let nextImageIndex = this.state.modalImageIndex + 1\n\n if (nextImageIndex > this.state.filteredArt.length - 1) {\n this.closeModal()\n } else {\n this.setState({modalImageIndex: nextImageIndex}, () => {\n this.establishImageIndex(this.state.modalImageIndex)\n })\n }\n }\n\n // This simply changes the css display class from \"block\" to \"none\"\n closeModal() {\n this.setState({displayModal: {'display': \"none\"}})\n }\n\n\n// ==================================\n// Arrow keys\n// ==================================\n keyAction(event) {\n // console.log(\"event:\", event)\n let whichKey = event.keyCode;\n switch (whichKey) {\n case 39:\n console.log(\"forward arrow key pushed. Next image.\")\n this.modalNextImage()\n break;\n case 37:\n console.log(\"back arrow key pushed. Previous image\")\n this.modalPreviousImage()\n break;\n case 38:\n console.log(\"up arrow key pushed. Previous image.\")\n this.modalPreviousImage()\n break;\n case 40:\n console.log(\"down arrow key pushed Next image.\")\n this.modalNextImage()\n break;\n }\n }\n\n\n// ==================================\n// only display images from .json\n// 1) if includeingallery === true, return it...meaning keep it\n// 2) apply the above function as a filter to the states\n// ==================================\n includeInGalleryTrue(item){\n return item.includeingallery === true;\n };\n\n filterIncludeInGallery(){\n this.setState({filteredArt: art.filter(this.includeInGalleryTrue)})\n };\n\n componentDidMount(){\n // This determines which images from the art json are shown\n this.filterIncludeInGallery()\n // the hotkeys\n document.onkeyup = (event) => {\n this.keyAction(event);\n }\n };\n\n\n\n\n\n// ==================================\n// The render\n// ==================================\n render(){\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","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}