{"version":3,"sources":["webpack:///./app/javascript/brighteon/containers/media_container.js"],"names":["getLocale","localeData","messages","addLocaleData","MEDIA_COMPONENTS","MediaGallery","Video","Card","Poll","Hashtag","Audio","MediaContainer","state","media","index","time","backgroundColor","options","handleOpenMedia","document","body","classList","add","documentElement","style","marginRight","getScrollbarWidth","setState","handleOpenVideo","components","props","JSON","parse","componetIndex","getAttribute","mediaList","fromJS","handleCloseMedia","remove","setBackgroundColor","color","render","this","locale","map","call","component","i","componentName","Component","card","poll","hashtag","trends","Object","assign","onOpenVideo","onOpenMedia","ReactDOM","createPortal","key","onClose","currentTime","startTime","autoPlay","volume","defaultVolume","onChangeBackgroundColor","PureComponent"],"mappings":"gWAgBA,EAAiCA,sBAAzBC,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,SACpBC,YAAcF,GAEd,IAAMG,EAAmB,CAAEC,uBAAcC,gBAAOC,SAAMC,SAAMC,YAASC,iBAEhDC,E,oJAOnBC,MAAQ,CACNC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,gBAAiB,KACjBC,QAAS,M,EAGXC,gBAAkB,SAACL,EAAOC,GACxBK,SAASC,KAAKC,UAAUC,IAAI,uBAC5BH,SAASI,gBAAgBC,MAAMC,YAAiBC,cAAhD,KAEA,EAAKC,SAAS,CAAEd,QAAOC,SACxB,E,EAEDc,gBAAkB,SAACX,GACjB,IAAQY,EAAe,EAAKC,MAApBD,WACAhB,EAAUkB,KAAKC,MAAMH,EAAWZ,EAAQgB,eAAeC,aAAa,eAApErB,MACFsB,EAAYC,iBAAOvB,GAEzBM,SAASC,KAAKC,UAAUC,IAAI,uBAC5BH,SAASI,gBAAgBC,MAAMC,YAAiBC,cAAhD,KAEA,EAAKC,SAAS,CAAEd,MAAOsB,EAAWlB,WACnC,E,EAEDoB,iBAAmB,WACjBlB,SAASC,KAAKC,UAAUiB,OAAO,uBAC/BnB,SAASI,gBAAgBC,MAAMC,YAAc,EAE7C,EAAKE,SAAS,CACZd,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,gBAAiB,KACjBC,QAAS,MAEZ,E,EAEDsB,mBAAqB,SAAAC,GACnB,EAAKb,SAAS,CAAEX,gBAAiBwB,GAClC,E,sCAEDC,OAAA,WAAU,IAAD,aACP,EAA+BC,KAAKZ,MAA5Ba,EAAR,EAAQA,OAAQd,EAAhB,EAAgBA,WAEhB,OACE,YAAC,IAAD,CAAcc,OAAQA,EAAQzC,SAAUA,QAAxC,EACE,YAAC,WAAD,UACG,GAAG0C,IAAIC,KAAKhB,GAAY,SAACiB,EAAWC,GACnC,IAAMC,EAAgBF,EAAUZ,aAAa,kBACvCe,EAAY7C,EAAiB4C,GACnC,EAAyDjB,KAAKC,MAAMc,EAAUZ,aAAa,eAAnFrB,EAAR,EAAQA,MAAOqC,EAAf,EAAeA,KAAMC,EAArB,EAAqBA,KAAMC,EAA3B,EAA2BA,QAASC,EAApC,EAAoCA,OAAWvB,EAA/C,iBAiBA,OAfAwB,OAAOC,OAAOzB,EAAdwB,OAAA,IAAAA,CAAA,GACMzC,EAAQ,CAAEA,MAAOuB,iBAAOvB,IAAW,CAAC,EACpCqC,EAAO,CAAEA,KAAMd,iBAAOc,IAAU,CAAC,EACjCC,EAAO,CAAEA,KAAMf,iBAAOe,IAAU,CAAC,EACjCC,EAAU,CAAEA,QAAShB,iBAAOgB,IAAa,CAAC,EAC1CC,EAAS,CAAEA,OAAQjB,iBAAOiB,IAAY,CAAC,EAErB,UAAlBL,EAA4B,CAC9Bf,cAAec,EACfS,YAAa,EAAK5B,iBAChB,CACF6B,YAAa,EAAKvC,mBAIfwC,IAASC,aACd,kBAACV,EAAD,eAAenB,EAAf,CAAsB8B,IAAG,SAAWb,KACpCD,EAEH,IAED,YAAC,IAAD,CAAW9B,gBAAiB0B,KAAK9B,MAAMI,gBAAiB6C,QAASnB,KAAKL,uBAAtE,EACGK,KAAK9B,MAAMC,OACV,YAAC,IAAD,CACEA,MAAO6B,KAAK9B,MAAMC,MAClBC,MAAO4B,KAAK9B,MAAME,OAAS,EAC3BgD,YAAW,SAAEpB,KAAK9B,MAAMK,cAAb,EAAE,EAAoB8C,UACjCC,SAAQ,SAAEtB,KAAK9B,MAAMK,cAAb,EAAE,EAAoB+C,SAC9BC,OAAM,SAAEvB,KAAK9B,MAAMK,cAAb,EAAE,EAAoBiD,cAC5BL,QAASnB,KAAKL,iBACd8B,wBAAyBzB,KAAKH,uBAO3C,E,GAlGyC6B,gB","file":"js/containers/media_container-5d94ae688f4e636ffc88.chunk.js","sourcesContent":["import React, { PureComponent, Fragment } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { IntlProvider, addLocaleData } from 'react-intl';\nimport { fromJS } from 'immutable';\nimport { getLocale } from 'brighteon/locales';\nimport { getScrollbarWidth } from 'brighteon/utils/scrollbar';\nimport MediaGallery from 'brighteon/components/media_gallery';\nimport Poll from 'brighteon/components/poll';\nimport Hashtag from 'brighteon/components/hashtag';\nimport ModalRoot from 'brighteon/components/modal_root';\nimport MediaModal from 'brighteon/features/ui/components/media_modal';\nimport Video from 'brighteon/features/video';\nimport Card from 'brighteon/features/status/components/card';\nimport Audio from 'brighteon/features/audio';\n\nconst { localeData, messages } = getLocale();\naddLocaleData(localeData);\n\nconst MEDIA_COMPONENTS = { MediaGallery, Video, Card, Poll, Hashtag, Audio };\n\nexport default class MediaContainer extends PureComponent {\n\n static propTypes = {\n locale: PropTypes.string.isRequired,\n components: PropTypes.object.isRequired,\n };\n\n state = {\n media: null,\n index: null,\n time: null,\n backgroundColor: null,\n options: null,\n };\n\n handleOpenMedia = (media, index) => {\n document.body.classList.add('with-modals--active');\n document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;\n\n this.setState({ media, index });\n }\n\n handleOpenVideo = (options) => {\n const { components } = this.props;\n const { media } = JSON.parse(components[options.componetIndex].getAttribute('data-props'));\n const mediaList = fromJS(media);\n\n document.body.classList.add('with-modals--active');\n document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;\n\n this.setState({ media: mediaList, options });\n }\n\n handleCloseMedia = () => {\n document.body.classList.remove('with-modals--active');\n document.documentElement.style.marginRight = 0;\n\n this.setState({\n media: null,\n index: null,\n time: null,\n backgroundColor: null,\n options: null,\n });\n }\n\n setBackgroundColor = color => {\n this.setState({ backgroundColor: color });\n }\n\n render() {\n const { locale, components } = this.props;\n\n return (\n <IntlProvider locale={locale} messages={messages}>\n <Fragment>\n {[].map.call(components, (component, i) => {\n const componentName = component.getAttribute('data-component');\n const Component = MEDIA_COMPONENTS[componentName];\n const { media, card, poll, hashtag, trends, ...props } = JSON.parse(component.getAttribute('data-props'));\n\n Object.assign(props, {\n ...(media ? { media: fromJS(media) } : {}),\n ...(card ? { card: fromJS(card) } : {}),\n ...(poll ? { poll: fromJS(poll) } : {}),\n ...(hashtag ? { hashtag: fromJS(hashtag) } : {}),\n ...(trends ? { trends: fromJS(trends) } : {}),\n\n ...(componentName === 'Video' ? {\n componetIndex: i,\n onOpenVideo: this.handleOpenVideo,\n } : {\n onOpenMedia: this.handleOpenMedia,\n }),\n });\n\n return ReactDOM.createPortal(\n <Component {...props} key={`media-${i}`} />,\n component,\n );\n })}\n\n <ModalRoot backgroundColor={this.state.backgroundColor} onClose={this.handleCloseMedia}>\n {this.state.media && (\n <MediaModal\n media={this.state.media}\n index={this.state.index || 0}\n currentTime={this.state.options?.startTime}\n autoPlay={this.state.options?.autoPlay}\n volume={this.state.options?.defaultVolume}\n onClose={this.handleCloseMedia}\n onChangeBackgroundColor={this.setBackgroundColor}\n />\n )}\n </ModalRoot>\n </Fragment>\n </IntlProvider>\n );\n }\n\n}\n"],"sourceRoot":""}